1 2011-10-21 Bernd Schmidt <bernds@codesourcery.com>
3 * reg-notes.def (DEP_CONTROL): New.
4 * sched-ebb.c (add_deps_for_risky_insns): Add a REG_DEP_CONTROL when
6 * rtlanal.c (record_hard_reg_sets, find_all_hard_reg_sets,
7 record_hard_reg_uses_1, record_hard_reg_uses): New functions.
8 * function.c (record_hard_reg_sets, record_hard_reg_uses,
9 record_hard_reg_uses_1): Remove; move to rtlanal.c.
10 * lists.c (copy_INSN_LIST, concat_INSN_LIST): New functions.
11 * haifa-sched.c: Swap includes of "rtl.h" and "hard-reg-set.h".
12 (MUST_RECOMPUTE_SPEC_P): New macro.
13 (real_insn_for_shadow): New function.
14 (cond_clobbered_p, recompute_todo_spec, check_clobbered_conditions,
15 toggle_cancelled_flags): New static functions.
16 (schedule_insn): Relax an assert to only check for empty hard back
17 dependencies. Skip cancelled dependencies. Call
18 check_clobbered_conditions.
19 (copy_insn_list): Remove function, renamed moved to lists.c.
20 (save_backtrack_point): Use new spelling copy_INSN_LIST.
21 (unschedule_insns_until): Ensure TODO_SPEC is reset properly.
22 (restore_last_backtrack_point): Likewise. Call toggle_cancelled_flags.
23 (estimate_insn_tick): Ignore cancelled dependencies.
24 (haifa_speculate_insn): Move declaration.
25 (try_ready): Move code into recompute_todo_spec and call it. Tweak
26 some asserts. Ensure predicated patterns are restored if necessary.
27 Dump DEP_CONTROL flag.
28 (haifa_change_pattern): Merge with sched_change_pattern.
29 (sched_change_pattern): Remove function.
30 * sched-deps.c (NON_FLUSH_JUMP_KIND, NON_FLUSH_JUMP): Remove. All
31 uses changed to simply not test NON_FLUSH_JUMP_P.
32 (ds_to_dk, dk_to_ds, dump_dep, ds_to_dt, dump_ds, check_dep): Handle
34 (dep_spec_p): If DO_PREDICATION, REG_DEP_CONTROL is speculative.
35 (reg_pending_control_uses, control_dependency_cache): New static
37 (sched_get_reverse_condition_uncached): New function.
38 (sd_find_dep_between): Remove pointless assert. Look in
39 control_dependency_cache.
40 (ask_dependency_caches, set_dependency_caches, sd_delete_dep,
41 extend_dependency_caches, sched_deps_finish): Handle REG_DEP_CONTROL
42 and control_dependency_cache.
43 (sd_unresolve_dep): Use dep_spec_p.
44 (add_dependence): Now a wrapper around add_dependence_1, handling
45 REG_DEP_CONTROL specially.
46 (flush_pending_lists): Clear pending_jump_insns.
47 (sched_analyze_1): Handle pending_jump_insns like a memory flush.
48 (sched_analyze_2): Unconditionally add to pending memory flushes,
49 keep previous behaviour but apply it to pending_jump_insns instead.
50 (sched_analyze_insn): Defer adding jump reg dependencies using
51 reg_pending_control_uses; add them to the control_uses list. Handle
52 pending_jump_insns and control_uses when adding dependence lists.
53 (deps_analyze_insn): Update INSN_COND_DEPS.
54 (deps_analyze_insn): Add jumps to pending_jump_insns rather than
55 last_pending_memory_flush.
56 (init_deps): Initialize pending_jump_insns.
57 (free_deps): Free control_uses.
58 (remove_from_deps): Remove from pending_jump_insns.
59 (init_deps_global): Allocate reg_pending_control_uses).
60 (finish_deps_global): Free it.
61 (add_dependence_1): Renamed from add_dependence. Handle
63 * rtl.h (record_hard_reg_uses, find_all_hard_reg_sets): Declare.
64 (copy_INSN_LIST, concat_INSN_LIST): Declare.
65 * sched-int.h (struct deps_reg): Add control_uses.
66 (struct deps_desc): Add pending_jump_insns.
67 (struct _haifa_deps_insn_data): Add cond_deps.
68 (struct _haifa_insn_data): Add must_recompute_spec and predicated_pat.
69 (INSN_COND_DEPS, PREDICATED_PAT): New macros.
70 (BITS_PER_DEP_WEAK): Adjust for two extra bits in the word.
71 (DEP_CONTROL): New macro.
72 (DEP_TYPES): Include it.
73 (HARD_DEP): Adjust definition.
74 (DEP_CANCELLED): New macro.
75 (enum SCHED_FLAGS): Add DO_PREDICATION.
76 (sched_get_reverse_condition_uncached, real_insn_for_shadow): Declare.
77 * sched-rgn.c (concat_INSN_LIST): Remove function.
78 (deps_join): Handle pending_jump_insns.
79 (free_pending_lists): Likewise.
80 * config/c6x/c6x.c (c6x_set_sched_flags): Set DO_PREDICATION for final
83 2011-10-21 Georg-Johann Lay <avr@gjlay.de>
86 * config/avr/libgcc.S (__EIND__): New define to 0x3C.
87 (__tablejump__): Consistently use EIND for indirect jump/call.
88 (__tablejump_elpm__): Ditto.
90 2011-10-21 Bernd Schmidt <bernds@codesourcery.com>
92 * config/c6x/c6x.md (attr "op_pattern"): New.
93 (load_sdata_pic, mov<mode>_insn for QIHIM and SISFVM): Set it.
94 * config/c6x/c6x-mult.md.in (mulhi3_VARIANT_, mulhisi3_insn_VARIANT_):
96 * config/c6x/c6x-mult.md: Regenerate.
97 * config/c6x/c6x.c: Include "regrename.h".
98 (unit_req_table): New typedef.
99 (unit_reqs): Use it for the declaration.
100 (unit_req_factor, get_unit_reqs, merge_unit_reqs, unit_req_imbalance,
101 get_unit_operand_masks, try_rename_operands, reshuffle_units): New
103 (count_unit_reqs): New arg reqs. All callers changed. Use
104 get_unit_reqs, and don't merge here.
105 (res_mii): New arg reqs. All callers changed. Rewrite to use a loop
106 using unit_req_factor.
107 (hwloop_optimize): Call reshuffle_units. Call merge_unit_reqs after
109 (c6x_reorg): Add reg notes problem, and call df_analyze.
110 * Makefile.in ($(out_object_file)): Depend on regrename.h.
112 2011-10-21 Kai Tietz <ktietz@redhat.com>
114 * fold-const.c (simple_operand_p_2): Handle integral
115 casts from boolean-operands.
117 2011-10-21 Jan Hubicka <jh@suse.cz>
119 * cgraph.c (dump_cgraph_node): Dump alias flag.
120 * cgraphunit.c (handle_alias_pairs): Handle weakrefs with no destination.
121 (get_alias_symbol): New function.
122 (output_weakrefs): Output also weakrefs with no destinatoin.
123 (lto_output_node): Output weakref alias flag when at function boundary.
125 2011-10-21 Andrew Stubbs <ams@codesourcery.com>
129 * config/arm/driver-arm.c (vendors): Make static.
131 2011-10-21 Uros Bizjak <ubizjak@gmail.com>
133 * config/i386/i386.c (ix86_emit_swdivsf): Force b into register.
134 (ix86_emit_swsqrtsf): Force a into register.
136 2011-10-20 Mike Stump <mikestump@comcast.net>
138 * regcprop.c (copyprop_hardreg_forward_1): Update recog_data
139 after validate_change wipes it out.
141 2011-10-20 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
143 * config/spu/spu.md ("vec_permv16qi"): Reduce selector modulo 32
144 before using the shufb instruction.
146 2011-10-20 Kirill Yukhin <kirill.yukhin@intel.com>
149 * config/i386/i386.md (bmi_bextr_<mode>): Update register/
150 memory operand order.
151 (bmi2_bzhi_<mode>3): Ditto.
152 (bmi2_pdep_<mode>3): Ditto.
153 (bmi2_pext_<mode>3): Ditto.
155 2011-10-20 Richard Henderson <rth@redhat.com>
157 * target.def (vec_perm_const_ok): Rename from builtin_vec_perm_ok.
158 * optabs.c (can_vec_perm_expr_p): Update to match.
159 (expand_vec_perm_expr): Likewise.
160 * config/i386/i386.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Rename
161 from TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK.
162 * doc/tm.texi.in: Likewise.
164 2011-10-20 Sergey Ostanevich <sergos.gnu@gmail.com>
167 * config/i386/i386.c (processor_target_table): Change Atom
168 align_loops_max_skip to 15.
170 2011-10-20 Richard Henderson <rth@redhat.com>
172 * target.def (builtin_vec_perm): Remove.
173 * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
175 * config/i386/i386.c (ix86_expand_vec_perm_builtin): Remove.
176 (IX86_BUILTIN_VEC_PERM_*): Remove.
177 (bdesc_args): Remove vec_perm builtins
178 (ix86_expand_builtin): Likewise.
179 (ix86_expand_vec_perm_const_1): Rename from
180 ix86_expand_vec_perm_builtin_1.
181 (extract_vec_perm_cst): Merge into...
182 (ix86_vectorize_vec_perm_const_ok): ... here. Rename from
183 ix86_vectorize_builtin_vec_perm_ok.
184 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
186 * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): Remove.
187 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
189 * config/spu/spu.c (spu_builtin_vec_perm): Remove.
190 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
192 2011-10-20 Uros Bizjak <ubizjak@gmail.com>
195 * config/i386/i386.h (RECIP_MASK_DEFAULT): New define.
196 * config/i386/i386.op (recip_mask): Initialize with RECIP_MASK_DEFAULT.
197 * doc/invoke.texi (ix86 Options, -mrecip): Document that GCC
198 implements vectorized single float division and vectorized sqrtf(x)
199 with reciprocal sequence with additional Newton-Raphson step with
202 2011-10-20 Dodji Seketeli <dodji@redhat.com>
204 * ggc-zone.c (ggc_internal_alloc_zone_stat): Rename
205 ggc_alloced_size_order_for_request into ggc_round_alloc_size like
206 it was done in ggc-page.c.
209 * doc/cppopts.texi: Use @smallexample/@end smallexample in
210 documentation for -fdebug-cpp instead of @quotation/@end quotation
211 that is not supported by contrib/texi2pod.pl.
213 2011-10-19 Jan Hubicka <jh@suse.cz>
215 * ipa-inline.c (inline_small_functions): Always update all calles after
218 2011-10-19 Jan Hubicka <jh@suse.cz>
221 * ipa-inline.c (inline_small_functions): Fix checking code to not make
222 effect on fibheap stability.
224 2011-10-20 Maxim Kuvyrkov <maxim@codesourcery.com>
226 * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
228 2011-10-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
231 * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
234 2011-10-20 Richard Guenther <rguenther@suse.de>
236 * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
237 and rotates to the set of expensive operations.
239 2011-10-19 David S. Miller <davem@davemloft.net>
241 * config/sparc/sparc.c (sparc_expand_move): Use can_create_pseudo_p.
242 (sparc_emit_set_const32): Likewise.
243 (sparc_emit_set_const64_longway): Likewise.
244 (sparc_emit_set_const64): Likewise.
245 (sparc_legitimize_pic_address): Likewise.
246 (memory_ok_for_ldd): Likewise.
248 2011-10-20 Dehao Chen <dehao@google.com>
250 * profile.c (compute_branch_probabilities): Compute and dump the
251 overlap between the static estimation and the instrumentation profile.
252 (OVERLAP_BASE): New macro.
253 (compute_frequency_overlap): New function
255 2011-10-19 Jakub Jelinek <jakub@redhat.com>
257 * config/i386/i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use
258 d->op1 instead of d->op0 for the second vpshufb.
259 (expand_vec_perm_even_odd_1): For V8SImode fix vpshufd immediates.
260 (ix86_expand_vec_perm_const): If mask indicates two operands are
261 needed, but both are the same and expanding them as d.op0 == d.op1
262 failed, retry with d.op0 != d.op1.
263 (ix86_expand_vec_perm_builtin): Likewise. Handle sorry printing
264 also for d.nelt == 32.
267 * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
270 2011-10-19 Bernd Schmidt <bernds@codesourcery.com>
272 * regrename.h: New file.
273 * regrename.c: Include it. Also include "emit-rtl.h".
274 (struct du_head, struct du_chain, du_head_p DEF_VEC and
275 DEF_VEC_ALLOC_P): Move to regrename.h.
276 (do_replace): Remove declaration.
277 (insn_rr): New variable.
278 (cur_operand): New static variable.
279 (regrename_chain_from_id): Renamed from chain_from_id and no longer
280 static. All callers changed.
281 (record_operand_use): New static function.
282 (scan_rtx_reg): Use it.
283 (find_best_rename_reg): New function, broken out of rename_chains.
284 (rename_chains): Use it. Don't update chain regno and nregs here, ...
285 (regrename_do_replace): ... do it here instead. Renamed from
286 do_replace, and no longer static. All callers changed.
287 (regrename_analyze): No longer static. New arg bb_mask.
288 All callers changed. If bb_mask is nonzero, use it to limit the
289 number of basic blocks we analyze. If we failed to analyze a block,
290 clear insn operand data.
291 (record_out_operands): New arg insn_info. Update cur_operand if it is
293 (build_def_use): If insn_rr is nonnull, pass an insn_info to
294 record_out_operands, and update cur_operand here as well.
295 (regrename_init, regrename_finish): New functions.
296 (regrename_optimize): Use them.
297 * Makefile.in (regrename.o): Adjust dependencies.
299 2011-10-19 Tom de Vries <tom@codesourcery.com>
301 PR tree-optimization/50769
302 * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
303 unconditionally. Handle case that phi_vuse2 is not an SSA_NAME. Add
304 dummy argument .MEM to phi when increasing number of arguments of phi by
305 redirecting edges to the block with phi.
307 2011-10-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
310 * configure.ac: Save and restore CXXFLAGS around
311 gcc_AC_CHECK_DECLS uses.
312 Check for madvise() declaration with g++ if --enable-build-with-cxx.
313 * configure: Regenerate.
314 * config.in: Regenerate.
315 * ggc-page.c (USING_MADVISE): Also check HAVE_DECL_MADVISE.
317 2011-10-19 Alexandre Oliva <aoliva@redhat.com>
320 * var-tracking.c (loc_exp_dep, onepart_aux): New structs.
321 (variable_part): Replace offset with union.
322 (enum onepart_enum, onepart_enum_t): New.
323 (variable_def): Drop cur_loc_changed, add onepart.
324 (value_chain_def, const_value_chain): Remove.
325 (VAR_PART_OFFSET, VAR_LOC_1PAUX): New macros, with checking.
326 (VAR_LOC_DEP_LST, VAR_LOC_DEP_LSTP): New macros.
327 (VAR_LOC_FROM, VAR_LOC_DEPTH, VAR_LOC_DEP_VEC): Likewise.
328 (value_chain_pool, value_chains): Remove.
329 (dropped_values): New.
330 (struct parm_reg): Only if HAVE_window_save.
331 (vt_stack_adjustments): Don't record register arguments.
333 (dv_onepart_p): Return a onepart_enum_t.
337 (variable_htab_free): Release onepart aux data. Reset flags.
338 (value_chain_htab_hash, value_chain_htab_eq): Remove.
339 (unshare_variable): Use onepart field. Propagate onepart aux
340 data or offset. Drop cur_loc_changed.
341 (val_store): Cope with NULL insn. Rephrase dump output. Check
342 for unsuitable locs. Add FIXME on using cselib locs.
343 (val_reset): Remove FIXME of unfounded concerns.
344 (val_resolve): Check for unsuitable locs. Add FIXME on using
346 (variable_union): Use onepart field, adjust access to offset.
348 (VALUE_CHANGED, DECL_CHANGED): Update doc.
349 (set_dv_changed): Clear NO_LOC_P when changed.
350 (find_loc_in_1pdv): Use onepart field.
351 (intersect_loc_chains): Likewise.
352 (unsuitable_loc): New.
353 (loc_cmp): Keep ENTRY_VALUEs at the end of the loc list.
354 (add_value_chain, add_value_chains): Remove.
355 (add_cselib_value_chains, remove_value_chain): Likewise.
356 (remove_value_chains, remove_cselib_value_chains): Likewise.
357 (canonicalize_loc_order_check): Use onepart. Drop cur_loc_changed.
358 (canonicalize_values_star, canonicalize_vars_star): Use onepart.
359 (variable_merge_over_cur): Likewise. Adjust access to offset.
360 Drop cur_loc_changed.
361 (variable_merge_over_src): Use onepart field.
362 (remove_duplicate_values): Likewise.
363 (variable_post_merge_new_vals): Likewise.
364 (find_mem_expr_in_1pdv): Likewise.
365 (dataflow_set_preserve_mem_locs): Likewise. Drop cur_loc_changed
367 (dataflow_set_remove_mem_locs): Likewise. Use VAR_LOC_FROM.
368 (variable_different_p): Use onepart field. Move onepart test out
370 (argument_reg_set): Drop.
371 (add_uses, add_stores): Preserve but do not record in dynamic
372 tables equivalences for ENTRY_VALUEs and CFA_based addresses.
373 Avoid unsuitable address expressions.
374 (EXPR_DEPTH): Unlimit.
375 (EXPR_USE_DEPTH): Repurpose PARAM_MAX_VARTRACK_EXPR_DEPTH.
376 (prepare_call_arguments): Use DECL_RTL_IF_SET.
377 (dump_var): Adjust access to offset.
378 (variable_from_dropped, recover_dropped_1paux): New.
379 (variable_was_changed): Drop cur_loc_changed. Use onepart.
380 Preserve onepart aux in empty_var. Recover empty_var and onepart
381 aux from dropped_values.
382 (find_variable_location_part): Special-case onepart. Adjust
384 (set_slot_part): Use onepart. Drop cur_loc_changed. Adjust
385 access to offset. Initialize onepaux. Drop value chains.
386 (delete_slot_part): Drop value chains. Use VAR_LOC_FROM.
387 (VEC (variable, heap), VEC (rtx, stack)): Define.
388 (expand_loc_callback_data): Drop dummy, cur_loc_changed,
389 ignore_cur_loc. Add expanding, pending, depth.
390 (loc_exp_dep_alloc, loc_exp_dep_clear): New.
391 (loc_exp_dep_insert, loc_exp_dep_set): New.
392 (notify_dependents_of_resolved_value): New.
393 (update_depth, vt_expand_var_loc_chain): New.
394 (vt_expand_loc_callback): Revamped.
395 (resolve_expansions_pending_recursion): New.
396 (INIT_ELCD, FINI_ELCD): New.
397 (vt_expand_loc): Use the new macros above. Drop ignore_cur_loc
398 parameter, adjust all callers.
399 (vt_expand_loc_dummy): Drop.
400 (vt_expand_1pvar): New.
401 (emit_note_insn_var_location): Operate on non-debug decls only.
402 Revamp multi-part cur_loc recomputation and one-part expansion.
403 Drop cur_loc_changed. Adjust access to offset.
404 (VEC (variable, heap)): Drop.
405 (changed_variables_stack, changed_values_stack): Drop.
406 (check_changed_vars_0, check_changed_vars_1): Remove.
407 (check_changed_vars_2, check_changed_vars_3): Remove.
408 (values_to_stack, remove_value_from_changed_variables): New.
409 (notify_dependents_of_changed_value, process_changed_values): New.
410 (emit_notes_for_changes): Revamp onepart updates.
411 (emit_notes_for_differences_1): Use onepart. Drop cur_loc_changed
412 and value chains. Propagate onepaux. Recover empty_var and onepaux
414 (emit_notes_for_differences_2): Drop value chains.
415 (emit_notes_in_bb): Adjust.
416 (vt_emit_notes): Drop value chains, changed_variables_stack.
417 Initialize and release dropped_values.
418 (create_entry_value): Revamp.
419 (vt_add_function_parameter): Use new interface.
420 (note_register_arguments): Remove.
421 (vt_initialize): Drop value chains and register arguments.
422 (vt_finalize): Drop value chains. Release windowed_parm_regs only
424 * rtl.h: Document various pass-local uses of RTL flags.
425 * tree.h (DECL_RTL_KNOWN_SET): New.
426 * doc/invoke.texi (param max-vartrack-expr-depth): Update
427 description and default.
429 2011-10-19 Georg-Johann Lay <avr@gjlay.de>
432 * config/avr/avr.md (cc): New alternative out_plus_noclobber.
434 (addhi3): Don't pipe through short; use gen_int_mode instead.
435 Prior to reload, expand to gen_addhi3_clobber.
436 (*addhi3): Use avr_out_plus_noclobber if applicable, use
437 out_plus_noclobber in cc and adjust_len attribute.
438 (addhi3_clobber): 2 new RTL peepholes.
439 (addhi3_clobber): New insn.
440 * config/avr/avr-protos.h: (avr_out_plus_noclobber): New prototype.
441 * config/avr/avr.c (avr_out_plus_noclobber): New function.
442 (notice_update_cc): Handle CC_OUT_PLUS_NOCLOBBER.
443 (avr_out_plus_1): Tweak if only MSB is +/-1 and other bytes are 0.
444 Set cc0 to set_zn for adiw on 16-bit values.
445 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS_NOCLOBBER.
446 (expand_epilogue): No need to add 0 to frame_pointer_rtx.
448 2011-10-19 Richard Guenther <rguenther@suse.de>
451 * tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
452 the condition is properly gimple before using it.
453 * tree-eh (stmt_could_throw_1_p): Properly extract the
454 operation type from comparisons.
456 2011-10-19 Roland Stigge <stigge@antcom.de>
459 * plugin.c (add_new_plugin): Fix typo in fatal_error message.
461 2011-10-19 Roland Stigge <stigge@antcom.de>
464 * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
466 2011-10-19 Richard Guenther <rguenther@suse.de>
469 * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
471 2011-10-19 Andrey Belevantsev <abel@ispras.ru>
473 PR rtl-optimization/50340
474 * sel-sched-ir.c (update_target_availability): LHS register
475 availability is not known if the unavailable LHS of the other
476 expression is a different register.
478 2011-10-19 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
481 * config/spu/spu.c (spu_emit_vector_compare): Support unordered
482 floating-point comparisons.
484 2011-10-19 Jan Hubicka <jh@suse.cz>
486 * cgraphunit.c (handle_alias_pairs): Also handle wekref with
487 destination declared.
488 (output_weakrefs): New function.
489 * varpool.c (varpool_create_variable_alias): Handle external aliases.
491 2011-10-19 Jakub Jelinek <jakub@redhat.com>
493 * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
494 second argument instead of mode.
496 2011-10-18 Jakub Jelinek <jakub@redhat.com>
498 * config/i386/i386.c (ix86_expand_vec_perm): In merge_two use
499 mode SUBREG of operands[0] as target.
500 (valid_perm_using_mode_p): Don't ignore higher bits of d->perm.
501 (expand_vec_pshufb): For V8SImode vmode emit avx2_permvarv8si.
502 (expand_vec_perm_1): Handle identity and some broadcast
504 (expand_vec_perm_interleave2): Handle also 32-byte modes, using
505 vperm2[fi]128 or vpunpck[lh]* followed by single insn permutation.
506 For d->testing_p return true earlier to avoid creating more GC
508 (expand_vec_perm_vpermq_perm_1): New function.
509 (expand_vec_perm_vpshufb2_vpermq): For d->testing_p return true
510 earlier to avoid creating more GC garbage. Fix handling of
511 V16HImode. Avoid some SUBREGs in SET_DEST.
512 (expand_vec_perm_broadcast_1): Return false for 32-byte integer
514 (expand_vec_perm_vpshufb4_vpermq2): New function.
515 (ix86_expand_vec_perm_builtin_1): Call expand_vec_perm_vpermq_perm_1
516 and expand_vec_perm_vpshufb4_vpermq2.
518 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
520 * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
523 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
525 PR tree-optimization/50717
526 * tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
527 parameter. Calculate 'type' from stmt.
528 (convert_mult_to_widen): Update call the is_widening_mult_p.
529 (convert_plusminus_to_widen): Likewise.
531 2011-10-18 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
533 * config/spu/spu.c (struct machine_function): New data structure.
534 (spu_init_machine_status): New function.
535 (spu_option_override): Install it.
536 (get_pic_reg): Set and use cfun->machine->pic_reg.
537 (spu_split_immediate): Do not set crtl->uses_pic_offset_table.
538 (need_to_save_reg): Use cfun->machine->pic_reg instead of
539 checking crtl->uses_pic_offset_table.
540 (spu_expand_prologue): Likewise.
542 2011-10-18 Jakub Jelinek <jakub@redhat.com>
544 PR tree-optimization/50735
545 * function.c (gimplify_parameters): Use create_tmp_var instead of
546 create_tmp_reg. If parm is not TREE_ADDRESSABLE and type is complex
547 or vector type, set DECL_GIMPLE_REG_P.
549 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
551 * config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
552 * config/arm/arm.opt: Add 'native' processor_type and
553 arm_arch enum values.
554 * config/arm/arm.h (host_detect_local_cpu): New prototype.
555 (EXTRA_SPEC_FUNCTIONS): New define.
556 (MCPU_MTUNE_NATIVE_SPECS): New define.
557 (DRIVER_SELF_SPECS): New define.
558 * config/arm/driver-arm.c: New file.
559 * config/arm/x-arm: New file.
560 * doc/invoke.texi (ARM Options): Document -mcpu=native,
561 -mtune=native and -march=native.
563 2011-10-18 Alexander Monakov <amonakov@ispras.ru>
565 PR rtl-optimization/50205
566 * sel-sched.c (count_occurrences_1): Simplify on the assumption that
567 p->x is a register. Forbid substitution when the same register is
568 found in a different mode.
569 (count_occurrences_equiv): Assert that 'what' is a register.
571 2011-10-18 Richard Guenther <rguenther@suse.de>
573 PR tree-optimization/50767
574 * tree-ssa-pre.c (create_expression_by_pieces): Update the
577 2011-10-18 Julian Brown <julian@codesourcery.com>
579 * config/arm/arm.c (arm_block_move_unaligned_straight)
580 (arm_adjust_block_mem, arm_block_move_unaligned_loop)
581 (arm_movmemqi_unaligned): New.
582 (arm_gen_movmemqi): Support unaligned block copies.
584 2011-10-18 Ira Rosen <ira.rosen@linaro.org>
586 * doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
587 vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
588 * tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
589 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
590 (op_code_prio): Likewise.
591 (op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
592 * optabs.c (optab_for_tree_code): Handle
593 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
594 (init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
595 * optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
596 * genopinit.c (optabs): Initialize the new optabs.
597 * expr.c (expand_expr_real_2): Handle
598 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
599 * gimple-pretty-print.c (dump_binary_rhs): Likewise.
600 * tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
601 * tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
602 VEC_WIDEN_LSHIFT_LO_EXPR): New.
603 * cfgexpand.c (expand_debug_expr): Handle new tree codes.
604 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
605 vect_recog_widen_shift_pattern.
606 (vect_handle_widen_mult_by_const): Rename...
607 (vect_handle_widen_op_by_const): ...to this. Handle shifts.
608 Add a new argument, update documentation.
609 (vect_recog_widen_mult_pattern): Assume that only second
610 operand can be constant. Update call to
611 vect_handle_widen_op_by_const.
612 (vect_recog_over_widening_pattern): Fix typo.
613 (vect_recog_widen_shift_pattern): New.
614 * tree-vect-stmts.c (vectorizable_type_promotion): Handle
616 (supportable_widening_operation): Likewise.
617 * tree-inline.c (estimate_operator_cost): Handle new tree codes.
618 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
619 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
620 * config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
621 (vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
622 vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
624 * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
626 * config/arm/iterators.md (V_innermode): New.
627 * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
630 2011-10-18 Richard Guenther <rguenther@suse.de>
632 * tree-ssa-alias.h (struct pt_solution): Remove
633 vars_contains_restrict member.
634 (pt_solutions_same_restrict_base): Remove.
635 (pt_solution_set): Adjust.
636 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Remove
637 vars_contains_restrict handling.
638 (dump_points_to_solution): Likewise.
639 (ptr_derefs_may_alias_p): Do not call pt_solutions_same_restrict_base.
640 * tree-ssa-structalias.c (struct variable_info): Remove is_restrict_var
642 (new_var_info): Do not initialize it.
643 (ipa_escaped_pt): Adjust.
644 (make_constraint_from_restrict): Make the tag global.
645 (make_constraint_from_global_restrict): New function.
646 (make_constraint_from_heapvar): Remove.
647 (create_variable_info_for): Do not make restrict vars point
649 (intra_create_variable_infos): Likewise.
650 (find_what_var_points_to): Remove vars_contains_restrict handling.
651 (pt_solution_set): Adjust.
652 (pt_solution_ior_into): Likewise.
653 (pt_solutions_same_restrict_base): Remove.
654 (compute_points_to_sets): Do not test is_restrict_var.
655 * cfgexpand.c (update_alias_info_with_stack_vars): Adjust.
656 * gimple-pretty-print.c (pp_points_to_solution): Likewise.
658 2011-10-18 Tom de Vries <tom@codesourcery.com>
660 PR tree-optimization/50672
661 * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
663 (mark_virtual_phi_result_for_renaming): Use
664 mark_virtual_operand_for_renaming.
665 * tree-flow.h (mark_virtual_operand_for_renaming): Declare.
666 * tree-ssa-tail-merge.c (release_last_vdef): New function.
667 (purge_bbs): Add update_vops parameter. Call release_last_vdef for each
669 (tail_merge_optimize): Add argument to call to purge_bbs.
671 2011-10-18 Richard Guenther <rguenther@suse.de>
674 * expr.c (get_object_or_type_alignment): New function.
675 (expand_assignment): Use it.
676 (expand_expr_real_1): Likewise.
678 2011-10-18 Dodji Seketeli <dodji@redhat.com>
681 * input.c (dump_line_table_statistics): Use long, not size_t.
683 2011-10-17 Eric Botcazou <ebotcazou@adacore.com>
685 * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
687 2011-10-17 Simon Baldwin <simonb@google.com>
688 Ian Lance Taylor <iant@google.com>
690 * configure.ac: Add --with-native-system-header-dir. Set and
691 substitute NATIVE_SYSTEM_HEADER_DIR. Use native_system_header
692 when setting target_header_dir.
693 * config.gcc: Always set native_system_header_dir.
694 (*-*-gnu*): Set native_system_header_dir. Don't use t-gnu.
695 (i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir. Don't
697 (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
698 native_system_header_dir.
699 (spu-*-elf*): Set native_system_header_dir.
700 * Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
701 @NATIVE_SYSTEM_HEADER_DIR@.
702 (PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
703 * cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
704 (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
705 STANDARD_INCLUDE_COMPONENT.
706 (cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR. Rename
707 STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
708 * system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
709 STANDARD_INCLUDE_COMPONENT.
710 * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
711 * config/i386/t-mingw-w32: Likewise.
712 * config/i386/t-mingw-w64: Likewise.
713 * config/spu/t-spu-elf: Likewise.
714 * config/i386/t-djgpp: Remove.
715 * config/t-gnu: Remove.
716 * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
717 (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
718 STANDARD_INCLUDE_COMPONENT.
719 * config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
720 * config/spu/spu-elf.h: Likewise.
721 * config/vms/xm-vms.h: Likewise.
722 * config/gnu.h: Likewise.
723 * config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
724 and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
725 NATIVE_SYSTME_HEADER_COMPONENT.
726 * doc/install.texi (Configuration): Document
727 --with-native-system-header-dir. Mention it in the documentation
728 for --with-sysroot and --with-build-sysroot.
729 * doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
730 STANDARD_INCLUDE_DIR. Rename STANDARD_INCLUDE_COMPONENT to
731 NATIVE_SYSTEM_HEADER_COMPONENT. Rename uses of
732 STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
733 * doc/fragments.texi (Target Fragment): Don't document
734 NATIVE_SYSTEM_HEADER_DIR.
735 * configure, doc/tm.texi: Rebuild.
737 2011-10-17 Richard Henderson <rth@redhat.com>
739 * config/sparc/sparc.md: Use register_or_zero_operand where rJ
742 * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
744 * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
745 * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
747 2011-10-17 David S. Miller <davem@davemloft.net>
749 * config/sparc/sparc-modes.def: Add single entry vector modes for
751 * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
753 (mov<V32:mode>): Revert back to plain SFmode pattern.
754 (*movsf_insn): Likewise.
755 (mov<V64:mode>): Revert back to plain DFmode pattern.
756 (*movdf_insn_sp32): Likewise.
757 (*movdf_insn_sp32_v9): Likewise.
758 (*movdf_insn_sp64): Likewise.
759 (V64 mode splitters) Likewise.
760 (addsi3): Remove VIS alternatives.
762 (and<V64I:mode>3): Revert to DImode only pattern.
763 (and<V64I:mode>3_sp32): Likewise.
764 (*and<V64I:mode>3_sp64): Likewise.
765 (and<V32I:mode>3): Likewise.
766 (*and_not_<V64I:mode>_sp32): Likewise.
767 (*and_not_<V64I:mode>_sp64): Likewise.
768 (*and_not_<V32I:mode>): Likewise.
769 (ior<V64I:mode>3): Likewise.
770 (*ior<V64I:mode>3_sp32): Likewise.
771 (*ior<V64I:mode>3_sp64): Likewise.
772 (ior<V32I:mode>3): Likewise.
773 (*or_not_<V64I:mode>_sp32): Likewise.
774 (*or_not_<V64I:mode>_sp64): Likewise.
775 (*or_not_<V32I:mode>): Likewise.
776 (xor<V64I:mode>3): Likewise.
777 (*xor<V64I:mode>3_sp32): Likewise.
778 (*xor<V64I:mode>3_sp64): Likewise.
779 (xor<V32I:mode>3): Likewise.
780 (V64I mode splitters): Likewise.
781 (*xor_not_<V64I:mode>_sp32): Likewise.
782 (*xor_not_<V64I:mode>_sp64): Likewise.
783 (*xor_not_<V32I:mode>): Likewise.
784 (one_cmpl<V64I:mode>2): Likewise.
785 (*one_cmpl<V64I:mode>2_sp32): Likewise.
786 (*one_cmpl<V64I:mode>2_sp64): Likewise.
787 (one_cmpl<V32I:mode>2): Likewise.
788 (VM32, VM64, VMALL): New mode iterators.
789 (vbits, vconstr, vfptype): New mode attributes.
790 (mov<VMALL:mode>): New expander.
791 (*mov<VM32:mode>_insn): New insn.
792 (*mov<VM64:mode>_insn_sp64): New insn.
793 (*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
794 specifically for the register to memory case.
795 (vec_init<mode>): New expander.
796 (VADDSUB): New mode iterator.
797 (<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
799 (<plusminus_insn><mode>3): New consolidated pattern.
800 (VL): New mode iterator for logical operations.
801 (vlsuf): New more attribute.
802 (vlop): New code iterator.
803 (vlinsn, vlninsn): New code attributes.
804 (<code><mode>3): New insn to non-negated vector logical ops.
805 (*not_<code><mode>3): Likewise for negated variants.
806 (*nand<mode>_vis): New insn.
807 (vlnotop): New code iterator.
808 (*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
809 (one_cmpl<mode>2): New insn.
810 (faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
811 (bshuffle<VM64:mode>_vis): Likewise.
812 (v<vis3_shift_patname><mode>3): Use GCM mode iterator.
813 (fp<plusminus_insn>64_vis): Use V1DI mode.
814 (VASS mode iterator): Use V1SI not SI mode.
815 * config/sparc/sparc.c (sparc_vis_init_builtins): Account for
816 single-entry vector mode changes.
817 (sparc_expand_builtin): Likewise.
818 (sparc_expand_vector_init): New function.
819 * config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.
821 2011-10-17 Kai Tietz <ktietz@redhat.com>
823 * fold-const.c (simple_operand_p_2): New function.
824 (fold_truthop): Rename to
825 (fold_truth_andor_1): function name.
826 Additionally remove branching creation for logical and/or.
827 (fold_truth_andor): Handle branching creation for logical and/or here.
829 2011-10-17 Andi Kleen <ak@linux.intel.com>
831 * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
833 2011-10-17 Georg-Johann Lay <avr@gjlay.de>
835 * config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
836 * config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
837 (adjust_len): Add alternative "call".
838 (isa, enabled): New insn attributes.
839 (length): Use match_test with AVR_HAVE_JMP_CALL instead of
841 (*sbrx_branch<mode>): Ditto.
842 (*sbrx_and_branch<mode>): Ditto.
843 (*sbix_branch): Ditto.
844 (*sbix_branch_bit7): Ditto.
845 (*sbix_branch_tmp): Ditto.
846 (*sbix_branch_tmp_bit7): Ditto.
848 (negsi2): Use attribute "isa" instead of assembler dialect.
849 (extendhisi2): Ditto.
850 (call_insn, call_value_insn): Set adjust_len attribute.
851 (indirect_jump): Indent to coding rules.
852 (call_prologue_saves): Use isa attribute instead of mcu_mega.
853 (epilogue_restores): Ditto. Fix setting of SP as described in the
855 (*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
856 and *indirect_jump_avr6.
857 (*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
858 (*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
859 (*tablejump_rjmp, *tablejump_lib): Remove.
860 * config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.
862 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
865 * doc/invoke.texi ([Wnonnull]): Update.
867 2011-10-17 Richard Henderson <rth@redhat.com>
870 * optabs.c (expand_vec_perm_expr): Fix indexing error.
872 2011-10-17 Sergio Durigan Junior <sergiodj@redhat.com>
874 * configure.ac: Display `yes' if the SystemTap header has been found.
875 * configure: Regenerate.
877 2011-10-08 Andi Kleen <ak@linux.intel.com>
880 * config.in, configure: Regenerate.
881 * configure.ac (madvise): Add to AC_CHECK_FUNCS.
882 * ggc-page.c (USING_MADVISE): Add.
883 (page_entry): Add discarded field.
884 (alloc_page): Check for discarded pages.
885 (release_pages): Add USING_MADVISE branch.
887 2011-10-17 Richard Guenther <rguenther@suse.de>
889 PR tree-optimization/50729
890 * tree-vrp.c (extract_range_from_unary_expr_1): Remove redundant test.
891 (simplify_conversion_using_ranges): Properly test the
894 2011-10-15 Tom Tromey <tromey@redhat.com>
895 Dodji Seketeli <dodji@redhat.com>
897 * ggc.h (ggc_round_alloc_size): Declare new public entry point.
898 * ggc-none.c (ggc_round_alloc_size): New public stub function.
899 * ggc-page.c (ggc_alloced_size_order_for_request): New static
900 function. Factorized from ggc_internal_alloc_stat.
901 (ggc_round_alloc_size): New public function. Uses
902 ggc_alloced_size_order_for_request.
903 (ggc_internal_alloc_stat): Use ggc_alloced_size_order_for_request.
904 * ggc-zone.c (ggc_round_alloc_size): New public function extracted
905 from ggc_internal_alloc_zone_stat.
906 (ggc_internal_alloc_zone_stat): Use ggc_round_alloc_size.
907 * toplev.c (general_init): Initialize
908 line_table->alloced_size_for_request.
910 2011-10-15 Tom Tromey <tromey@redhat.com>
911 Dodji Seketeli <dodji@redhat.com>
913 * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New macros.
914 (num_expanded_macros_counter, num_macro_tokens_counter): Declare
916 (dump_line_table_statistics): Define new function.
917 * input.h (dump_line_table_statistics): Declare new function.
918 * toplev.c (dump_memory_report): Call dump_line_table_statistics.
920 2011-10-15 Tom Tromey <tromey@redhat.com>
921 Dodji Seketeli <dodji@redhat.com>
923 * doc/cppopts.texi: Document -fdebug-cpp.
924 * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor options.
926 2011-10-15 Tom Tromey <tromey@redhat.com>
927 Dodji Seketeli <dodji@redhat.com>
929 * gcc/diagnostic.h (diagnostic_report_current_module): Add a
931 * diagnostic.c (diagnostic_report_current_module): Add a location
932 parameter to the function definition. Use it instead of
933 input_location. Resolve the virtual location rather than just
934 looking up its map and risking to touch a resulting macro map.
935 (default_diagnostic_starter): Pass the relevant diagnostic
936 location to diagnostic_report_current_module.
937 * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): New.
938 (virt_loc_aware_diagnostic_finalizer): Likewise.
939 (diagnostic_report_current_function): Pass the
940 relevant location to diagnostic_report_current_module.
941 * tree-diagnostic.h (virt_loc_aware_diagnostic_finalizer): Declare
943 * toplev.c (general_init): By default, use the new
944 virt_loc_aware_diagnostic_finalizer as diagnostic finalizer.
945 * Makefile.in: Add vec.h dependency to tree-diagnostic.c.
947 2011-10-15 Tom Tromey <tromey@redhat.com>
948 Dodji Seketeli <dodji@redhat.com>
950 * doc/cppopts.texi (-ftrack-macro-expansion): Document new option.
951 * doc/invoke.texi (-ftrack-macro-expansion): Add this to the list of
952 preprocessor related options.
954 2011-10-15 Tom Tromey <tromey@redhat>
955 Dodji Seketeli <dodji@redhat.com>
957 * input.h (struct expanded_location): Move to libcpp/line-map.h.
958 (LOCATION_COLUMN): New accessor
959 (in_system_header_at): Use linemap_location_in_system_header_p.
960 * diagnostic.c (diagnostic_report_current_module): Adjust to avoid
961 touching the internals of struct line_map. Use the public API instead.
962 (diagnostic_report_diagnostic): Don't use relational operator '<'
963 on virtual locations. Use linemap_location_before_p instead.
964 * input.c (expand_location): Adjust to expand to the tokens'
965 spelling location when macro location tracking is on.
968 2011-10-08 Andi Kleen <ak@linux.intel.com>
970 * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
972 2011-10-13 Andi Kleen <ak@linux.intel.com>
974 * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
976 2011-10-16 Ira Rosen <ira.rosen@linaro.org>
978 PR tree-optimization/50727
979 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
980 DEF_STMT to the list of statements to be replaced by the
983 2011-10-16 Eric Botcazou <ebotcazou@adacore.com>
985 PR rtl-optimization/50615
986 * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
988 2011-10-16 Jakub Jelinek <jakub@redhat.com>
990 PR tree-optimization/50596
991 * tree-vectorizer.h (NUM_PATTERNS): Increase to 7.
992 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
993 vect_recog_bool_pattern.
994 (check_bool_pattern, adjust_bool_pattern_cast,
995 adjust_bool_pattern, vect_recog_bool_pattern): New functions.
997 2011-10-16 Ira Rosen <ira.rosen@linaro.org>
999 * tree-vect-stmts.c (vectorizable_load): For SLP without permutation
1000 treat the first load of the node as the first element in its
1002 * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
1003 necessary and possible.
1004 (vect_build_slp_tree): Add new argument. Allow load groups of any size
1005 in basic blocks. Keep all the loads for further permutation check.
1006 Use the new argument to determine if there is a permutation. Update
1007 the recursive calls.
1008 (vect_supported_load_permutation_p): Allow subchains of interleaving
1009 chains in basic block vectorization.
1010 (vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
1011 Check load permutation based on the new parameter.
1012 (vect_schedule_slp_instance): Don't start from the first element in
1013 interleaving chain unless the loads are permuted.
1015 2011-10-15 Jan Hubicka <jh@suse.cz>
1019 * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
1020 after function body.
1022 2011-10-15 Richard Henderson <rth@redhat.com>
1024 * tree-vect-slp.c: Include langhooks.h.
1025 (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin.
1026 (vect_transform_slp_perm_load): Use can_vec_perm_expr_p. Simplify
1027 mask creation for VEC_PERM_EXPR.
1028 * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask,
1030 (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin.
1031 * Makefile.in (tree-vect-slp.o): Update dependency.
1032 * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant.
1034 2011-10-15 Alan Modra <amodra@gmail.com>
1037 * ifcvt.c (dead_or_predicable): Revert accidental commit with
1038 HAVE_simple_return test.
1040 2011-10-15 Alan Modra <amodra@gmail.com>
1042 * ifcvt.c (dead_or_predicable): Disable if-conversion when
1043 doing so is likely to kill a shrink-wrapping opportunity.
1045 PR rtl-optimization/49941
1046 * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
1048 * rtl.h (set_return_jump_label): Declare.
1049 * function.c (set_return_jump_label): New function, extracted..
1050 (thread_prologue_and_epilogue_insns): ..from here. Use it in
1051 another instance to set return jump_label.
1052 * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
1053 * reorg.c (find_end_label): Likewise.
1055 2011-10-14 David S. Miller <davem@davemloft.net>
1057 * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
1058 with a more complete cpp test.
1059 * config/sparc/linux64.h: Likewise.
1060 * config/sparc/linux.h: Likewise.
1061 * config/sparc/sparc.opt (sparc_debug): New target variable.
1062 (mdebug): New target option.
1063 * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
1064 TARGET_DEBUG_OPTIONS): New defines.
1065 * config/sparc/sparc.c (debug_target_flag_bits,
1066 debug_target_flags): New functions.
1067 (sparc_option_override): Add name strings back to cpu_table[].
1068 Parse -mdebug string. When TARGET_DEBUG_OPTIONS is true, print
1069 out the target flags before and after override processing as well
1070 as the selected cpu. If MASK_V8PLUS, make sure that the selected
1073 2011-10-15 Oleg Endo <oleg.endo@t-online.de>
1076 * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
1077 * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
1078 * config/sh/sh.md (tstsi_t): Name existing insn. Make inner
1079 and instruction commutative.
1080 (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
1081 tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
1082 tstsi_t_zero_extract_subreg_xor_little,
1083 tstsi_t_zero_extract_subreg_xor_big): New insns.
1084 (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
1086 (*andsi_compact): Reorder alternatives so that K08 is considered first.
1088 2011-10-14 Eric Botcazou <ebotcazou@adacore.com>
1091 * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
1092 processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
1094 2011-10-14 Gerald Pfeifer <gerald@pfeifer.com>
1096 * invoke.texi (AVR Options): Avoid \leq{}.
1098 2011-10-14 Kai Tietz <ktietz@redhat.com>
1100 * gimplify.c (gimplify_expr): Take care that for bitwise-binary
1101 transformation the operands have compatible types.
1103 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1105 * config/i386/sse.md (vec_widen_smult_hi_v8hi,
1106 vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
1107 vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
1108 mode iterator and any_extend code iterator.
1109 (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
1110 (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
1111 also for TARGET_SSE4_1 using pmuldq insn.
1112 (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
1113 (sse2_sse4_1): New code attr.
1114 (udot_prodv4si): Macroize using any_extend code iterator.
1115 (<s>dot_prodv8si): New expander.
1117 2011-10-14 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
1119 * config/i386/i386.c (atom_cost): Changed cost for loading
1120 QImode using movzbl.
1122 2011-10-14 Michael Meissner <meissner@linux.vnet.ibm.com>
1124 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
1125 change on October 11th, 2011.
1127 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1129 * config/i386/sse.md (vec_interleave_high<mode>,
1130 vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
1131 * config/i386/i386.c (expand_vec_perm_interleave3): New function.
1132 (ix86_expand_vec_perm_builtin_1): Call it.
1134 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
1136 Fix thinko from r179765
1137 * config/avr/avr.c (avr_option_override): Don't override
1138 flag_omit_frame_pointer if not actually needed.
1140 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
1143 * doc/invoke.texi (AVR Options): Document -mstrict-X.
1145 * config/avr/avr.opt (-mstrict-X): New option.
1146 (avr_strict_X): New variable reflecting -mstrict-X.
1147 * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
1148 outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
1149 (avr_legitimate_address_p): Pass outer_code to
1150 avr_reg_ok_for_addr_p and use that function in case PLUS.
1151 (avr_mode_code_base_reg_class): Depend on avr_strict_X.
1152 (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
1153 (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
1155 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1157 * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
1160 * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
1161 (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
1162 Use <sseinsnmode> instead of TI in mode attr.
1164 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1166 * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
1167 * config/arm/linux-atomic.c: Change comment to point to 64bit version.
1168 (SYNC_LOCK_RELEASE): Instantiate 64bit version.
1169 * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
1171 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1173 * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
1174 (arm_output_strex): Support strexd.
1175 (arm_output_it): New helper to output it in Thumb2 mode only.
1176 (arm_output_sync_loop): Support DI mode. Change comment to
1177 not support const_int.
1178 (arm_expand_sync): Support DI mode.
1179 * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
1181 * config/arm/iterators.md (NARROW): move from sync.md.
1182 (QHSD): New iterator for all current ARM integer modes.
1183 (SIDI): New iterator for SI and DI modes only.
1184 * config/arm/sync.md (sync_predtab): New mode_attr.
1185 (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
1186 (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
1187 (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
1188 (sync_nandsi): Fold into sync_nand<mode>.
1189 (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
1190 (sync_new_nandsi): Fold into sync_new_nand<mode>.
1191 (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
1192 (sync_old_nandsi): Fold into sync_old_nand<mode>.
1193 (sync_compare_and_swap<mode>): Support SI & DI.
1194 (sync_lock_test_and_set<mode>): Likewise.
1195 (sync_<sync_optab><mode>): Likewise.
1196 (sync_nand<mode>): Likewise.
1197 (sync_new_<sync_optab><mode>): Likewise.
1198 (sync_new_nand<mode>): Likewise.
1199 (sync_old_<sync_optab><mode>): Likewise.
1200 (sync_old_nand<mode>): Likewise.
1201 (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
1202 (arm_sync_lock_test_and_setsi): Likewise.
1203 (arm_sync_new_<sync_optab>si): Likewise.
1204 (arm_sync_new_nandsi): Likewise.
1205 (arm_sync_old_<sync_optab>si): Likewise.
1206 (arm_sync_old_nandsi): Likewise.
1207 (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
1208 (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
1209 (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
1210 (arm_sync_new_nand<mode> NARROW): Likewise.
1211 (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
1212 (arm_sync_old_nand<mode> NARROW): Likewise.
1214 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1217 * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1219 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1221 * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1223 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1225 * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1227 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1229 * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
1230 on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
1232 2011-10-14 Richard Guenther <rguenther@suse.de>
1234 PR tree-optimization/50723
1235 * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1237 2011-10-14 Nicola Pero <nicola.pero@meta-innovation.com>
1239 * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1242 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1245 * doc/invoke.texi ([Wformat-zero-length]): Update.
1247 2011-10-14 Iain Sandoe <iains@gcc.gnu.org>
1250 * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1251 build for powerpc targets. (darwin_patch_builtins): Only build for
1254 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1256 * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
1257 (avx_cvtdq2pd256_2): ... this.
1258 (sseunpackfltmode): New mode attr.
1259 (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
1260 vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
1261 using VI2_AVX2 iterator.
1262 (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
1264 2011-10-13 David S. Miller <davem@davemloft.net>
1266 * config/sparc/sparc.md (plusminus): New code iterator.
1267 (plusminus_insn): New code attr.
1268 (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
1269 using plusminus and plusminus_insn.
1270 (fpadd64_vis, fpsub64_vis): Likewise.
1272 2011-10-13 Richard Henderson <rth@redhat.com>
1274 * doc/md.texi (vec_perm): Document fallback to byte permutation.
1275 * genopinit.c (optabs): Add vec_perm_const.
1276 * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
1277 Reject non-vector modes. Allow fallback to byte permutation.
1278 (expand_vec_perm_expr_1): Split out from ...
1279 (expand_vec_perm_expr): ... here. Allow fallback to byte permutation.
1280 * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
1281 * tree-vect-generic.c (lower_vec_perm): Update for name change.
1283 2011-10-13 Richard Henderson <rth@redhat.com>
1285 * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1287 * config/rs6000/spu.md (vec_permv16qi): New pattern.
1289 * config/i386/i386.c (ix86_expand_vec_perm_const): New.
1290 * config/i386/i386-protos.h: Update.
1291 * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
1292 (vec_perm_const<VEC_PERM_CONST>): New expander.
1294 * optabs.c (expand_vector_broadcast): New.
1295 (expand_binop): Expand scalar shifts of vectors to vector shifts
1296 of vectors, if the former isn't supported.
1297 * tree-vect-generic.c (expand_vector_operations_1): Don't do that
1298 here; always simplify to scalar shift of vector if possible.
1300 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1301 test for vector splat.
1303 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1305 * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1307 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1308 Richard Guenther <rguenther@suse.de>
1310 * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
1311 or complex vars even if their DECL_UID is in not_reg_needs bitmap.
1313 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1315 * config/i386/sse.md (reduc_umin_v8hi): New pattern.
1316 * config/i386/i386.c (ix86_build_const_vector): Handle
1317 also V32QI, V16QI, V16HI and V8HI modes.
1318 (emit_reduc_half): New function.
1319 (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
1320 Use emit_reduc_half helper function.
1322 2011-10-13 Lawrence Crowl <crowl@google.com>
1323 Diego Novillo <dnovillo@google.com>
1325 * lto-streamer-in.c (input_struct_function_base): Factor out of ...
1326 (input_function): ... here.
1327 * lto-streamer-out.c (output_struct_function_base): Factor out of ...
1328 (output_function): ... here.
1330 2011-10-13 Gabriel Charette <gchare@google.com>
1331 Diego Novillo <dnovillo@google.com>
1333 * streamer-hooks.h (struct streamer_hooks): Add hooks
1334 input_location and output_location.
1335 * lto-streamer-in.c (lto_input_location): Use
1336 streamer_hooks.input_location, if set.
1337 * lto-streamer-out.c (lto_output_location): Use
1338 streamer_hooks.output_location, if set.
1340 2011-10-13 Eric Botcazou <ebotcazou@adacore.com>
1342 * doc/invoke.texi (SPARC options): Document -mfix-at697f.
1343 * config/sparc/sparc.opt (mfix-at697f): New option.
1344 * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
1345 (sparc_reorg): New function.
1347 2011-10-13 Richard Guenther <rguenther@suse.de>
1349 PR tree-optimization/50712
1350 * ipa-split.c (split_function): Always re-gimplify parameters
1351 when they are not gimple vals before passing them. Properly
1352 check for type compatibility.
1354 2011-10-13 Tom de Vries <tom@codesourcery.com>
1356 * function.c (gimplify_parameters): Set number of arguments of call to
1357 BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1359 2011-10-13 Tom de Vries <tom@codesourcery.com>
1361 * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
1362 for static const strings.
1363 * varasm.c (build_constant_desc): Generate the memory location of the
1364 constant using gen_const_mem.
1366 2011-10-13 Richard Guenther <rguenther@suse.de>
1368 PR tree-optimization/50698
1369 * tree-data-ref.c (split_constant_offset_1): Also process
1372 2011-10-12 David S. Miller <davem@davemloft.net>
1374 * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1375 (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1377 (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1379 (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
1380 (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
1381 Reimplement as unspecs and remove inaccurate comments.
1382 (vis3_shift_patname): New code attr.
1383 (<vis3_shift_insn><vbits>_vis): Rename to
1384 "v<vis3_shift_patname><mode>3".
1385 (vis3_addsub_ss_patname): New code attr.
1386 (<vis3_addsub_ss_insn><vbits>_vis): Rename to
1387 "<vis3_addsub_ss_patname><mode>3".
1388 * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
1389 accommodate pattern name changes.
1391 * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
1392 to zero when assembler lacks support for such instructions.
1393 * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
1394 and MASK_FMAF in defaults when assembler lacks necessary support.
1396 2011-10-12 Jakub Jelinek <jakub@redhat.com>
1398 * config/i386/sse.md (vec_unpacks_lo_<mode>,
1399 vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
1400 vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
1401 * config/i386/i386.c (ix86_expand_sse_unpack): Handle
1402 V32QImode, V16HImode and V8SImode for TARGET_AVX2.
1404 * config/i386/sse.md (vec_avx2): New mode_attr.
1405 (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
1406 (mul<mode>3): ... this.
1408 * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
1409 * config/i386/i386.c (ix86_expand_vec_perm): Handle
1410 V16QImode and V32QImode for TARGET_AVX2.
1411 (MAX_VECT_LEN): Increase to 32.
1412 (expand_vec_perm_blend): Add support for 32-byte integer
1413 vectors with TARGET_AVX2.
1414 (valid_perm_using_mode_p): New function.
1415 (expand_vec_perm_pshufb): Add support for 32-byte integer
1416 vectors with TARGET_AVX2.
1417 (expand_vec_perm_vpshufb2_vpermq): New function.
1418 (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
1419 (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
1421 (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
1422 and expand_vec_perm_vpshufb2_vpermq_even_odd.
1423 * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
1424 32-byte integer vector modes.
1425 (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
1426 (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
1427 (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
1429 (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
1430 match_dup, instead add 4 new operands and require they have
1431 right cross-lane values.
1432 (avx2_permv4di): Change into define_expand.
1433 (avx2_permv4di_1): New instruction.
1434 (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
1435 for "xm" constrained operand.
1436 (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
1438 * config/i386/sse.md (avx2_gathersi<mode>,
1439 avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
1440 match_scratch, change memory_operand to register_operand,
1441 add (mem:BLK (scratch)) use.
1442 (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
1443 *avx2_gatherdi<mode>256): Add clobber of match_scratch,
1444 add earlyclobber to the output operand and match_scratch,
1445 add (mem:BLK (scratch)) use, change the other mem to match_operand.
1446 Use %p6 instead of %c6 in the pattern.
1447 * config/i386/i386.c (ix86_expand_builtin): Adjust for
1448 operand 2 being a Pmode register_operand instead of memory_operand.
1450 2011-10-12 Kai Tietz <ktietz@redhat.com>
1452 * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1454 2011-10-12 Steve Ellcey <sje@cup.hp.com>
1456 * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1458 2011-10-12 Richard Guenther <rguenther@suse.de>
1460 * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
1461 of the first store we visit in a basic-block.
1462 (get_continuation_for_phi): Search for a candidate VUSE that
1463 might dominates all others. Do pairwise disambiguation against
1466 2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
1468 PR tree-optimization/50189
1469 * tree-vrp.c (extract_range_from_assert): Use the type of
1470 the variable, not the limit.
1472 2011-10-12 Richard Guenther <rguenther@suse.de>
1474 PR tree-optimization/50700
1475 * tree-object-size.c (addr_object_size): Simplify and treat
1476 MEM_REF bases consistently.
1478 2011-10-12 Bernd Schmidt <bernds@codesourcery.com>
1480 * function.c (prepare_shrink_wrap, bb_active_p): New function.
1481 (thread_prologue_and_epilogue_insns): Use bb_active_p. Call
1482 prepare_shrink_wrap, then recompute bb_active_p for the last block.
1484 2011-10-12 Joseph Myers <joseph@codesourcery.com>
1487 * convert.c (convert_to_integer): Do not narrow operands of
1488 pointer subtraction.
1490 2011-10-12 Nick Clifton <nickc@redhat.com>
1492 * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro. Used to
1493 emit a .eabi_attribute assembler directive, possibly with a
1495 * config/arm/arm.c (arm_file_start): Use the new macro.
1496 * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1498 2011-10-12 Georg-Johann Lay <avr@gjlay.de>
1501 * config/avr/avr.md (*movqi): Rename to movqi_insn.
1502 (*call_insn): Rename to call_insn.
1503 (*call_value_insn): Rename to call_value_insn.
1504 * config/avr/avr.c (avr_2word_insn_p): New static function.
1505 (jump_over_one_insn_p): Use it.
1507 2011-10-12 Richard Sandiford <richard.sandiford@linaro.org>
1509 * expr.h (copy_blkmode_to_reg): Declare.
1510 * expr.c (copy_blkmode_to_reg): New function.
1511 (expand_assignment): Don't expand register RESULT_DECLs before
1512 the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
1513 RESULT_DECL register.
1514 (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
1515 * stmt.c (expand_return): Move BLKmode-to-register code into
1516 copy_blkmode_to_reg.
1518 2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
1521 * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
1522 (mov<F:mode>cc): Likewise.
1524 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1526 * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
1528 2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1530 * tree.h (built_in_decls): Delete old interface with two parallel
1531 arrays to hold standard builtin declarations, and replace it with
1532 a function based interface that can support creating builtins on
1533 the fly in the future. Change all uses, and poison the old
1534 names. Make sure 0 is not a legitimate builtin index.
1535 (implicit_built_in_decls): Ditto.
1536 (built_in_info): Ditto.
1537 (BUILTIN_VALID_P): Ditto.
1538 (builtin_decl_explicit): Ditto.
1539 (builtin_decl_implicit): Ditto.
1540 (set_builtin_decl): Ditto.
1541 (set_builtin_decl_implicit_p): Ditto.
1542 (builtin_decl_explicit_p): Ditto.
1543 (builtin_decl_implicit_p): Ditto.
1544 * tree-complex.c (expand_complex_libcall): Ditto.
1545 * tree-loop-distribution.c (generate_memset_zero): Ditto.
1546 * tree-ssa-strlen.c (get_string_length): Ditto.
1547 (handle_builtin_strcpy): Ditto.
1548 (handle_builtin_strcat): Ditto.
1549 * tree.c (iterative_hash_expr): Ditto.
1550 (local_define_builtin): Ditto.
1551 (build_common_builtin_nodes): Ditto.
1552 * builtins.c (built_in_decls): Ditto.
1553 (implicit_built_in_decls): Ditto.
1554 (built_in_info): Ditto
1555 (expand_builtin_classify_type): Ditto.
1556 (mathfn_built_in_1): Ditto.
1557 (expand_builtin_cexpi): Ditto.
1558 (expand_builtin_mempcpy_args): Ditto.
1559 (expand_builtin_stpcpy): Ditto.
1560 (gimplify_va_arg_expr): Ditto.
1561 (expand_builtin_sync_operation): Ditto.
1562 (build_builtin_expect_predicate): Ditto.
1563 (fold_builtin_memory_op): Ditto.
1564 (fold_builtin_strcpy): Ditto.
1565 (fold_builtin_stpcpy): Ditto.
1566 (fold_builtin_strncpy): Ditto.
1567 (fold_builtin_interclass_mathfn): Ditto.
1568 (fold_builtin_classify): Ditto.
1569 (fold_builtin_2): Ditto.
1570 (fold_builtin_strstr): Ditto.
1571 (fold_builtin_strrchr): Ditto.
1572 (fold_builtin_strpbrk): Ditto.
1573 (fold_builtin_strcat): Ditto.
1574 (fold_builtin_strncat): Ditto.
1575 (fold_builtin_strcspn): Ditto.
1576 (fold_builtin_fputs): Ditto.
1577 (fold_builtin_sprintf): Ditto.
1578 (fold_builtin_snprintf): Ditto.
1579 (expand_builtin_memory_chk): Ditto.
1580 (fold_builtin_memory_chk): Ditto.
1581 (fold_builtin_stxcpy_chk): Ditto.
1582 (fold_builtin_strncpy_chk): Ditto.
1583 (fold_builtin_strcat_chk): Ditto.
1584 (fold_builtin_strncat_chk): Ditto.
1585 (fold_builtin_sprintf_chk_1): Ditto.
1586 (fold_builtin_snprintf_chk_1): Ditto.
1587 (fold_builtin_printf): Ditto.
1588 (fold_builtin_fprintf): Ditto.
1589 (fold_call_stmt): Ditto.
1590 (set_builtin_user_assembler_name): Ditto.
1591 * tree-emutls.c (emutls_common_1): Ditto.
1592 * omp-low.c (scan_omp): Ditto.
1593 (lower_rec_input_clauses): Ditto.
1594 (lower_reduction_clauses): Ditto.
1595 (expand_parallel_call): Ditto.
1596 (expand_task_call): Ditto.
1597 (maybe_catch_exception): Ditto.
1598 (optimize_omp_library_calls): Ditto.
1599 (expand_omp_for_generic): Ditto.
1600 (expand_omp_for_static_nochunk): Ditto.
1601 (expand_omp_for_static_chunk): Ditto.
1602 (expand_omp_sections): Ditto.
1603 (expand_omp_atomic_fetch_op): Ditto.
1604 (expand_omp_atomic_pipeline): Ditto.
1605 (expand_omp_atomic_mutex): Ditto.
1606 (lower_omp_single_simple): Ditto.
1607 (lower_omp_single_copy): Ditto.
1608 (lower_omp_master): Ditto.
1609 (lower_omp_ordered): Ditto.
1610 (lower_omp_critical): Ditto.
1611 * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
1612 * builtins.c (DEF_BUILTIN_STUB): Ditto.
1613 (BUILT_IN_NONE): Ditto.
1614 * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
1615 * gimple-low.c (lower_function_body): Ditto.
1616 (lower_builtin_setjmp): Ditto.
1617 * c-decl.c (merge_decls): Ditto.
1618 * tree-eh.c (lower_resx): Ditto.
1619 (lower_resx): Ditto.
1620 (lower_eh_dispatch): Ditto.
1621 * function (gimplify_parameters): Ditto.
1622 * c-typeck.c (build_function_call_vec): Ditto.
1623 * gimplify.c (build_stack_save_restore): Ditto.
1624 (gimplify_vla_decl): Ditto.
1625 (gimplify_modify_expr_to_memcpy): Ditto.
1626 (gimplify_modify_expr_to_memset): Ditto.
1627 (gimplify_variable_sized_compare): Ditto.
1628 (gimplify_function_tree): Ditto.
1629 * calls.c (emit_call_1): Ditto.
1630 * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
1631 * tree-nested.c (convert_nl_goto_reference): Ditto.
1632 (convert_tramp_reference_op): Ditto.
1633 (finalize_nesting_tree_1): Ditto.
1634 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
1635 (tree_ssa_prefetch_arrays): Ditto.
1636 * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
1637 * system.h (built_in_decls): Ditto.
1638 (implicit_built_in_decls): Ditto.
1639 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1640 * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
1641 * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
1642 (ix86_veclibabi_svml): Ditto.
1643 (ix86_veclibabi_acml): Ditto.
1644 * config/vms/vms.c (vms_patch_builtins): Ditto.
1645 * config/ia64/ia64.c (ia64_init_builtins): Ditto.
1646 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
1647 (rs6000_builtin_vectorized_libmass): Ditto.
1648 (rs6000_init_builtins): Ditto.
1649 * config/darwin.c (darwin_override_options): Ditto.
1650 (darwin_patch_builtin): Ditto.
1651 (darwin_rename_builtins): Ditto.
1652 * config/pa/pa.c (pa_init_builtins): Ditto.
1654 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1656 * tree.h (copy_ref_info): Expose existing function.
1657 * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
1658 * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
1660 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
1662 * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
1664 (avr_regno_mode_code_ok_for_base_p): New prototype.
1665 * config/avr/avr.h (BASE_REG_CLASS): Remove.
1666 (REGNO_OK_FOR_BASE_P): Remove.
1667 (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
1668 (REG_OK_FOR_BASE_STRICT_P): Remove.
1669 (MODE_CODE_BASE_REG_CLASS): New define.
1670 (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
1671 * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
1672 (avr_regno_mode_code_ok_for_base_p): New function.
1673 (avr_reg_ok_for_addr_p): New static function.
1674 (avr_legitimate_address_p): Use it. Beautify.
1676 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
1679 * config/avr/avr.md (cc): Add out_plus attribute alternative.
1680 (addsi3): Use it. Adapt avr_out_plus to new prototype. Use
1681 avr_out_plus for all CONST_INT addends.
1682 * config/avr/avr-protos.h (avr_out_plus): Change prototype.
1683 * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
1685 (avr_out_plus_1): Change prototype and report effect on cc0.
1686 (avr_out_plus): Ditto.
1687 (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
1689 2011-10-11 H.J. Lu <hongjiu.lu@intel.com>
1691 * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
1694 2011-10-11 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
1696 * doc/invoke.texi: Document new warning.
1697 * common.opt (Wvector-operation-performance): Define new warning.
1698 * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
1700 (exapnd_vector_parallel): Warn about expanded vector operation.
1701 (lower_vec_shuffle): Warn about expanded vector operation.
1702 * c-typeck.c (c_build_vec_perm_expr): Store correct location
1703 when creating VEC_PERM_EXPR.
1705 2011-10-11 Richard Guenther <rguenther@suse.de>
1707 PR tree-optimization/50204
1708 * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
1709 two argument handling from ...
1710 (get_continuation_for_phi): ... here. Handle arbitrary number
1713 2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
1715 * modulo-sched.c: Fix comment typo. Mention the possibility
1716 of using scheduling windows of II+1 cycles.
1718 2011-10-11 Tristan Gingold <gingold@adacore.com>
1720 * doc/invoke.texi (C Dialect Options): Document
1721 -fallow-parameterless-variadic-functions.
1722 * c-parser.c (c_parser_parms_list_declarator): Handle it.
1724 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1726 * config/avr/avr.c (avr_option_override): Set flag_omit_frame_pointer
1727 to 0 if frame pointer is needed for unwinding.
1729 2011-10-10 Uros Bizjak <ubizjak@gmail.com>
1732 * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm. Move from enum
1733 optab_index to enum direct_optab_index.
1734 (vec_perm_optab): Update.
1736 2011-10-10 Anatoly Sokolov <aesok@post.ru>
1738 * config/cris/cris.c (cris_preferred_reload_class): New function.
1739 (TARGET_PREFERRED_RELOAD_CLASS): Define.
1740 * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
1742 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1744 * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
1746 (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
1747 (*tablejump_enh, *tablejump): Remove insns.
1748 * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
1749 EIJMP for indirect jump. Use LPM Z+ where available.
1751 2011-10-10 Richard Henderson <rth@redhat.com>
1753 * doc/md.texi (vec_perm_const): Fix typo in cindex.
1755 2011-10-10 Kirill Yukhin <kirill.yukhin@intel.com>
1756 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
1758 * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
1760 2011-10-10 Richard Guenther <rguenther@suse.de>
1763 * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
1764 mark symbols for renaming. Append the VUSE to all statements
1765 that possibly can have one.
1767 2011-10-10 Richard Guenther <rguenther@suse.de>
1769 * ipa-split.c (pass_split_functions): Add verification TODOs.
1770 (pass_feedback_split_functions): Likewise.
1772 2011-10-10 Richard Guenther <rguenther@suse.de>
1775 * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
1776 only when optimizing.
1778 2011-10-10 Nick Clifton <nickc@redhat.com>
1781 * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
1782 df_get_live_out instead of accessing the bitmaps directly.
1783 (execute_compare_elim_after_reload): Remove calls to df_set_flags,
1784 df_live_add_problem and df_analyze.
1786 2011-10-10 Michael Matz <matz@suse.de>
1789 * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
1791 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1793 * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
1794 (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
1795 (node_sched_params): Remove first_reg_move and nreg_moves.
1796 (ps_num_consecutive_stages, extend_node_sched_params): New functions.
1797 (update_node_sched_params): Move up file.
1798 (print_node_sched_params): Print the stage. Don't dump info related
1799 to first_reg_move and nreg_moves.
1800 (set_columns_for_row): New function.
1801 (set_columns_for_ps): Move up file and use set_columns_for_row.
1802 (schedule_reg_move): New function.
1803 (schedule_reg_moves): Call extend_node_sched_params and
1804 schedule_reg_move. Extend size of uses bitmap. Initialize
1805 num_consecutive_stages. Return false if a move could not be
1807 (apply_reg_moves): Don't emit moves here.
1808 (permute_partial_schedule): Handle register moves.
1809 (duplicate_insns_of_cycles): Remove for_prolog. Emit moves according
1810 to the same stage-count test as ddg nodes.
1811 (generate_prolog_epilog): Update calls accordingly.
1812 (sms_schedule): Allow move-scheduling to add a new first stage.
1814 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1816 * modulo-sched.c (ps_insn): Adjust comment.
1817 (ps_reg_move_info): New structure.
1818 (partial_schedule): Add reg_moves field.
1819 (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
1820 (node_sched_params): Turn first_reg_move into an identifier.
1821 (ps_reg_move): New function.
1822 (ps_rtl_insn): Cope with register moves.
1823 (ps_first_note): Adjust comment and assert that the instruction
1824 isn't a register move.
1825 (node_sched_params): Replace with...
1826 (node_sched_param_vec): ...this vector.
1827 (set_node_sched_params): Adjust accordingly.
1828 (print_node_sched_params): Take a partial schedule instead of a ddg.
1829 Use ps_rtl_insn and ps_reg_move.
1830 (generate_reg_moves): Rename to...
1831 (schedule_reg_moves): ...this. Remove rescan parameter. Record each
1832 move in the partial schedule, but don't emit it here. Don't perform
1833 register substitutions here either.
1834 (apply_reg_moves): New function.
1835 (duplicate_insns_of_cycles): Use register indices directly,
1836 rather than finding instructions using PREV_INSN. Use ps_reg_move.
1837 (sms_schedule): Call schedule_reg_moves before committing to
1838 a partial schedule. Try the next ii if the schedule fails.
1839 Use apply_reg_moves instead of generate_reg_moves. Adjust
1840 call to print_node_sched_params. Free node_sched_param_vec
1841 instead of node_sched_params.
1842 (create_partial_schedule): Initialize reg_moves.
1843 (free_partial_schedule): Free reg_moves.
1845 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1847 * modulo-sched.c (ps_insn): Replace node field with an identifier.
1848 (SCHED_ASAP): Replace with..
1849 (NODE_ASAP): ...this macro.
1850 (SCHED_PARAMS): New macro.
1851 (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
1852 (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
1853 (node_sched_params): Remove asap.
1854 (ps_rtl_insn, ps_first_note): New functions.
1855 (set_node_sched_params): Use XCNEWVEC. Don't copy across the
1857 (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
1858 (generate_reg_moves): Pass ids to the SCHED_* macros.
1859 (update_node_sched_params): Take a ps insn identifier rather than
1860 a node as parameter. Use ps_rtl_insn.
1861 (set_columns_for_ps): Update for above field and SCHED_* macro changes.
1862 (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
1863 (optimize_sc): Update for above field and SCHED_* macro changes.
1864 Update calls to try_scheduling_node_in_cycle and
1865 update_node_sched_params.
1866 (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
1867 macro changes. Use ps_rtl_insn and ps_first_note.
1868 (sms_schedule): Pass ids to the SCHED_* macros.
1869 (get_sched_window): Adjust for above field and SCHED_* macro changes.
1870 Use NODE_ASAP instead of SCHED_ASAP.
1871 (try_scheduling_node_in_cycle): Remove node parameter. Update
1872 call to ps_add_node_check_conflicts. Pass ids to the SCHED_* macros.
1873 (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
1874 (ps_insert_empty_row): Adjust for above field changes.
1875 (compute_split_row): Use ids rather than nodes.
1876 (verify_partial_schedule): Adjust for above field changes.
1877 (print_partial_schedule): Use ps_rtl_insn.
1878 (create_ps_insn): Take an id rather than a node.
1879 (ps_insn_find_column): Adjust for above field changes.
1881 (ps_insn_advance_column): Adjust for above field changes.
1882 (add_node_to_ps): Remove node parameter. Update call to
1884 (ps_has_conflicts): Use ps_rtl_insn.
1885 (ps_add_node_check_conflicts): Replace node parameter than an id.
1887 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1889 * modulo-sched.c (undo_replace_buff_elem): Delete.
1890 (generate_reg_moves): Don't build and return an undo list.
1891 (free_undo_replace_buff): Delete.
1892 (sms_schedule): Adjust call to generate_reg_moves.
1893 Don't call free_undo_replace_buff.
1895 2011-10-10 Matthias Klose <doko@ubuntu.com>
1897 * common/config/m32c: Remove empty directory.
1899 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1901 * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
1903 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1906 * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
1907 atmega164a to 0x100.
1909 2011-10-09 Eric Botcazou <ebotcazou@adacore.com>
1911 * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
1912 the replacement if the conversion to the LHS type is not useless.
1914 2011-10-09 Ira Rosen <ira.rosen@linaro.org>
1916 PR tree-optimization/50635
1917 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
1918 DEF_STMT to the list of statements to be replaced by the
1920 (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
1922 2011-10-09 Anatoly Sokolov <aesok@post.ru>
1924 * system.h: Commit forgotten hunk in previous patch.
1925 (OUTPUT_ADDR_CONST_EXTRA): Poison.
1927 2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
1930 * doc/objc.texi (Garbage Collection): Updated example to protect
1931 +initialize against execution in subclasses.
1933 2011-10-07 Richard Henderson <rth@redhat.com>
1935 * doc/extend.texi (__builtin_shuffle): Improve the description to
1936 include the modulus of the selector. Mention OpenCL.
1937 * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
1939 * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
1940 * genopinit.c (optabs): Rename vshuffle to vec_perm.
1941 * c-typeck.c (c_build_vec_perm_expr): Rename from
1942 c_build_vec_shuffle_expr. Update for name changes.
1943 * optabs.c (expand_vec_perm_expr_p): Rename from
1944 expand_vec_shuffle_expr_p.
1945 (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
1946 * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
1947 (vec_perm_optab): Rename from vshuffle_optab.
1948 * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
1949 c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
1950 tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
1952 * config/i386/i386.c (ix86_expand_vec_perm): Rename from
1953 ix86_expand_vshuffle.
1954 * config/i386/i386-protos.h: Update.
1955 * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
1956 (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
1958 2011-10-07 Richard Henderson <rth@redhat.com>
1960 * config/i386/predicates.md (avx2_pblendw_operand): New.
1961 * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
1962 (avx2_pblendw, *avx2_pblendw): New expander and insn.
1964 2011-10-07 Richard Henderson <rth@redhat.com>
1966 * config/i386/i386.c (bdesc_args): Update code for
1967 __builtin_ia32_palignr256. Change type of __builtin_ia32_pslldqi256,
1968 and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
1969 (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
1970 * config/i386/sse.md (mode iterator V16): Add V2TI.
1971 (mode iterator SSESCALARMODE): Use V2TI not V4DI.
1972 (mode attr ssse3_avx2): Add V2TI.
1973 (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
1975 2011-10-07 David S. Miller <davem@davemloft.net>
1978 * configure.ac: Add .register directives to VIS3 test.
1979 * configure: Regenerate.
1981 2011-10-07 Richard Henderson <rth@redhat.com>
1983 * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
1985 2011-10-07 Richard Henderson <rth@redhat.com>
1988 * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
1990 2011-10-07 Andrew Stubbs <ams@codesourcery.com>
1992 * config/arm/predicates.md (shift_amount_operand): Remove constant
1994 (shift_operator): Check range of constants for all shift operators.
1996 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1998 * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
1999 Load GOT pointer for non-pic builds.
2000 (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
2001 (s390_emit_call): Likewise.
2003 2011-10-07 Tom de Vries <tom@codesourcery.com>
2006 * tree.c (build_common_builtin_nodes): Add local_define_builtin for
2007 BUILT_IN_ALLOCA_WITH_ALIGN. Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
2009 * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
2010 arglist. Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
2011 (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2012 (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2013 * tree-ssa-ccp.c (evaluate_stmt): Set align for
2014 BUILT_IN_ALLOCA_WITH_ALIGN.
2015 (fold_builtin_alloca_for_var): Rename to ...
2016 (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
2017 BUILT_IN_ALLOCA_WITH_ALIGN argument.
2018 (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
2019 fold_builtin_alloca_with_align.
2020 (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2021 * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
2023 * ipa-pure-const.c (special_builtin_state): Handle
2024 BUILT_IN_ALLOCA_WITH_ALIGN.
2025 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
2026 (call_may_clobber_ref_p_1): Same.
2027 * function.c (gimplify_parameters): Lower vla to
2028 BUILT_IN_ALLOCA_WITH_ALIGN.
2029 * gimplify.c (gimplify_vla_decl): Same.
2030 * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2031 * tree-mudflap.c (mf_xform_statements): Same.
2032 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
2033 (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
2034 * varasm.c (incorporeal_function_p): Same.
2035 * tree-object-size.c (alloc_object_size): Same.
2036 * gimple.c (gimple_build_call_from_tree): Same.
2038 2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
2040 * function.c (frame_required_for_rtx): Remove function.
2041 (requires_stack_frame_p): New arg set_up_by_prologue. All callers
2042 changed. Compute a set of mentioned registers and compare against
2043 the new arg rather than calling frame_required_for_rtx.
2044 (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
2045 reg set. Convert the unconverted_simple_returns mechanism to store
2046 jump insns rather than their basic blocks. Also check the
2047 orig_entry_edge destination for new blocks.
2049 2011-10-07 Jakub Jelinek <jakub@redhat.com>
2051 PR tree-optimization/50650
2052 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
2053 call vect_is_simple_cond here, instead fail if cond_expr isn't
2054 COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
2055 for cond_expr's first operand.
2056 * tree-vect-stmts.c (vect_is_simple_cond): Static again.
2057 * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
2059 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2061 * config/s390/s390.md (DWH, dwh): New mode macros.
2062 ("umulsidi3"): Extend to support "umulditi3" as well.
2064 2011-10-07 Uros Bizjak <ubizjak@gmail.com>
2065 H.J. Lu <hongjiu.lu@intel.com>
2068 * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
2069 integer PLUS RTX to a register to improve address combine.
2071 2011-10-06 Richard Henderson <rth@redhat.com>
2073 * combine-stack-adjust.c (maybe_move_args_size_note): Add after
2074 parameter; use it to decide whether to merge two notes.
2075 (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
2076 for the deallocation case as well.
2078 2011-10-06 Anatoly Sokolov <aesok@post.ru>
2080 * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
2081 * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
2082 * doc/tm.texi: Regenerate.
2083 * target.def (output_addr_const_extra): Use
2084 hook_bool_FILEptr_rtx_false.
2085 * targhooks.c (default_asm_output_addr_const_extra): Remove.
2086 * targhooks.h (default_asm_output_addr_const_extra): Remove.
2087 * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
2088 * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
2090 2011-10-06 David S. Miller <davem@davemloft.net>
2092 * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
2093 (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
2094 SI mode 64-bit code gen case explicitly zero-extend and truncate.
2095 (*popcount<mode>_sp64): Split up into...
2096 (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
2097 SImode case use truncate.
2098 (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
2099 subtract so the compiler can optimize it.
2100 (SIDI): Remove unused mode iterator.
2102 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2104 * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
2105 on the orig_entry_edge. Don't account for it in prologue_clobbered.
2107 2011-10-06 Jakub Jelinek <jakub@redhat.com>
2109 PR tree-optimization/50596
2110 * tree-vectorizer.h (vect_is_simple_cond): New prototype.
2111 (NUM_PATTERNS): Change to 6.
2112 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
2114 (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
2115 (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
2116 if it already has one, and don't set STMT_VINFO_VECTYPE in it
2117 if it is already set.
2118 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
2119 COND_EXPR in pattern stmts.
2120 (vect_is_simple_cond): No longer static.
2122 2001-10-06 Richard Henderson <rth@redhat.com>
2124 * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
2125 * config/i386/sse.md (sseshuffint): Remove.
2126 (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
2127 (VSHUFFLE_AVX2): New mode iterator.
2128 (vshuffle<mode>): Use it.
2129 (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
2131 * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
2132 for vector_all_ones_operand.
2133 (ix86_expand_int_vcond): Distinguish between comparison mode
2134 and data mode. Allow them to differ.
2135 (ix86_expand_vshuffle): Don't force data mode to match maskmode.
2137 2001-10-06 Richard Henderson <rth@redhat.com>
2139 * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
2140 mask operand. Tidy the code.
2142 2011-10-06 Jakub Jelinek <jakub@redhat.com>
2144 * tree-vect-patterns.c (vect_pattern_recog_1): Use
2145 vect_recog_func_ptr typedef for the first argument.
2146 (vect_pattern_recog): Rename vect_recog_func_ptr variable
2147 to vect_recog_func, use vect_recog_func_ptr typedef for it.
2149 PR tree-optimization/49279
2150 * tree-ssa-structalias.c (find_func_aliases): Don't handle
2152 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
2153 restrict propagation.
2154 * tree-ssa.c (useless_type_conversion_p): Don't return false
2155 if TYPE_RESTRICT differs.
2157 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2159 * function.c (thread_prologue_and_epilogue_insns): Build a vector
2160 of unconverted simple return blocks rather than trying to
2161 recompute them later based on bb_flags bitmap tests.
2163 2011-10-06 Michael Matz <matz@suse.de>
2165 * tree-flow.h (get_var_ann): Don't declare.
2166 * tree-flow-inline.h (get_var_ann): Remove.
2167 (set_is_used): Use var_ann, not get_var_ann.
2168 * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
2169 * tree-profile.c (gimple_gen_edge_profiler): Call
2170 find_referenced_var_in.
2171 (gimple_gen_interval_profiler): Ditto.
2172 (gimple_gen_pow2_profiler): Ditto.
2173 (gimple_gen_one_value_profiler): Ditto.
2174 (gimple_gen_average_profiler): Ditto.
2175 (gimple_gen_ior_profiler): Ditto.
2176 (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
2177 (gimple_gen_ic_func_profiler): Call add_referenced_var.
2178 * tree-mudflap.c (execute_mudflap_function_ops): Call
2181 2011-10-06 Jakub Jelinek <jakub@redhat.com>
2183 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
2184 don't set SSA_NAME_DEF_STMT that has been already set by
2185 gimple_build_assign_with_ops.
2186 (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
2187 vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
2190 * tree.h (avoid_folding_inline_builtin): New prototype.
2191 * builtins.c (avoid_folding_inline_builtin): No longer static.
2192 * gimple-fold.c (gimple_fold_builtin): Give up if
2193 avoid_folding_inline_builtin returns true.
2195 2011-10-06 Richard Guenther <rguenther@suse.de>
2197 * tree-vect-generic.c (vector_element): Look at previous
2200 2011-10-06 David Edelsohn <dje.gcc@gmail.com>
2203 * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2204 __powerpc__, __PPC__, __unix__.
2206 2011-10-06 Michael Matz <matz@suse.de>
2208 * i386/i386.opt (recip_mask, recip_mask_explicit,
2209 x_recip_mask_explicit): New variables and cl_target member.
2210 (mrecip=): New option.
2211 * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
2212 RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
2213 (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
2214 TARGET_RECIP_VEC_SQRT): New tests.
2215 * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
2216 (sqrt<mode>2): Check TARGET_RECIP_SQRT.
2217 * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
2218 (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
2219 * i386/i386.c (ix86_option_override_internal): Set recip_mask
2220 for -mrecip and -mrecip=options.
2221 (ix86_function_specific_save): Save recip_mask_explicit.
2222 (ix86_function_specific_restore): Restore recip_mask_explicit.
2224 * doc/invoke.texi (ix86 Options): Document the new option.
2226 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2229 * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2231 2011-10-06 Ulrich Weigand <ulrich.weigand@linaro.org>
2234 * config/arm/arm.c (arm_legitimize_reload_address): Recognize
2235 output of a previous pass through legitimize_reload_address.
2236 Do not attempt to optimize addresses if the base register is
2237 equivalent to a constant.
2239 2011-10-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2241 * function.c (thread_prologue_and_epilogue_insns): Mark
2242 last_bb_active as possibly unused. It is unused for targets which
2243 do neither have "return" nor "simple_return" expanders.
2245 2011-10-06 Richard Guenther <rguenther@suse.de>
2247 * fold-const.c (fold_ternary_loc): Also fold non-constant
2248 vector CONSTRUCTORs. Make more efficient.
2249 * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
2250 (cprop_into_stmt): Don't propagate into virtual operands.
2251 (optimize_stmt): Really dump original statement.
2253 2011-10-06 Nick Clifton <nickc@redhat.com>
2255 * config/rx/rx.md (smin3): Revert previous delta.
2257 2011-10-06 Richard Guenther <rguenther@suse.de>
2259 PR tree-optimization/38884
2260 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2261 reads from aggregate SSA names.
2263 2011-10-05 Jakub Jelinek <jakub@redhat.com>
2265 * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
2266 argument, truncate it at the beginning instead of allocating there
2267 and freeing at the end.
2268 (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
2269 pass its address to vect_pattern_recog_1.
2271 2011-10-05 David S. Miller <davem@davemloft.net>
2273 * config/sparc/sparc.opt (POPC): New option.
2274 * doc/invoke.texi: Document it.
2275 * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
2276 default on Niagara-2 and later.
2277 * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2278 * config/sparc/sparc.md (SIDI): New mode iterator.
2279 (ffsdi2): Delete commented out pattern and comments.
2280 (popcount<mode>2, clz<mode>2): New expanders.
2281 (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
2282 *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
2284 2011-10-06 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2287 * c-tree.h (c_expr_t): New typedef for struct c_expr.
2288 (C_EXPR_APPEND): New macro.
2289 * c-parser.c (c_parser_get_builtin_args): Preserve
2290 original_tree_code of c_expr structure.
2291 (c_parser_postfix_expression): Adjust to the new function.
2293 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2295 * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2296 if profiling after the prologue.
2298 2011-10-05 Jakub Jelinek <jakub@redhat.com>
2300 PR tree-optimization/50613
2301 * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
2302 operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
2303 and if it is neither that not SSA_NAME, give up.
2305 2011-10-05 Richard Henderson <rth@redhat.com>
2307 * tree-vect-generic.c (vector_element): Never fail. Use
2308 build_zero_cst. Tidy up type references.
2309 (lower_vec_shuffle): Never fail. Mask shuffle indicies. Reduce
2310 code duplication. Do update_stmt here ...
2311 (expand_vector_operations_1): ... not here.
2313 * config/i386/i386.c (ix86_expand_vshuffle): Never fail. Handle
2314 TARGET_XOP. Fix pshufb constant vector creation. Reduce code
2315 duplication. Handle V2DI without SSE4.1.
2316 * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
2317 * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
2319 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
2321 * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2322 of "found". Simplify return value calculation.
2323 (distance_agu_use): Ditto.
2325 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2328 * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
2329 if the function was not shrink-wrapped.
2330 (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
2332 * function.c (thread_prologue_and_epilogue_insns): Make sure the
2333 shrink_wrapped flag is set even if there is no dump file.
2335 2011-10-05 DJ Delorie <dj@redhat.com>
2336 Nick Clifton <nickc@redhat.com>
2338 * config/rx/rx.opt (mpid): Define.
2339 * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
2340 (MULTILIB_DIRNAMES): Add pid.
2341 * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
2342 (rx_num_interrupt_regs): New variable.
2343 (rx_gp_base_regnum): New function. Returns the number of the
2344 small data area register.
2345 (rx_pid_base_regnum): New function. Returns the number of the pid
2347 (rx_decl_for_addr): New function. Returns the symbolic part of a MEM.
2348 (rx_pid_data_operand): New function. Returns whether an object is
2349 in the position independent data area.
2350 (rx_legitimize_address): New function. Puts undecided PID
2351 objects in the PID data area.
2352 (rx_is_legitimate_address): Add support for PID operands.
2353 (rx_print_operand_address): Likewise.
2354 (rx_print_operand): Likewise.
2355 (rx_maybe_pidify_operand): New function. Determine if an operand
2356 is suitable for PID addressing.
2357 (rx_gen_move_template): Add PID support.
2358 (rx_conditional_register_usage): Likewise.
2359 (rx_option_override): Initialise rx_num_interrupt_regs.
2360 (rx_is_legitimate_constant): Add support for PID constants.
2361 (TARGET_LEGITIMIZE_ADDRESS): Define.
2362 * config/rx/constraints.md (Rpid): Define.
2364 * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2365 (tablejump): Add PID support.
2367 (mov<>_internal): Likewise.
2368 (addsi3): Convert to an expander. Add PID support.
2369 (pid_addr): New pattern.
2370 * config/rx/rx.h (CPP_SPEC): Define.
2371 (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
2372 (CASE_VECTOR_PC_RELATIVE): Define.
2373 (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
2374 * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
2375 * doc/invoke.texi (RX Options): Document -mpid command line option.
2377 2011-10-05 Richard Guenther <rguenther@suse.de>
2379 PR tree-optimization/38885
2380 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2383 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2385 * doc/invoke.texi (-fshrink-wrap): Document.
2386 * opts.c (default_options_table): Add it.
2387 * common.opt (fshrink-wrap): Add.
2388 * function.c (emit_return_into_block): Remove useless declaration.
2389 (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
2390 requires_stack_frame_p, gen_return_pattern): New static functions.
2391 (emit_return_into_block): New arg simple_p. All callers changed.
2392 Use gen_return_pattern.
2393 (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
2394 * config/i386/i386.md (return): Expand into a simple_return.
2395 (simple_return): New expander):
2396 (simple_return_internal, simple_return_internal_long,
2397 simple_return_pop_internal_long, simple_return_indirect_internal):
2398 Renamed from return_internal, return_internal_long,
2399 return_pop_internal_long and return_indirect_internal; changed to use
2401 * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2403 (ix86_pad_returns): Likewise.
2404 * function.h (struct rtl_data): Add member shrink_wrapped.
2405 * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
2406 are not jumps or sibcalls can't be compared.
2408 2011-10-05 Richard Guenther <rguenther@suse.de>
2410 * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2412 (simplify_unary_expression): Handle BIT_FIELD_REFs.
2413 (try_to_simplify): Handle BIT_FIELD_REFs.
2415 2011-10-05 Georg-Johann Lay <avr@gjlay.de>
2417 * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
2418 * config/avr/avr.c (avr_out_addto_sp): New function.
2419 (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
2420 * config/avr/avr.md (adjust_len): Add "addto_sp".
2421 (*movhi_sp): Remove insn.
2422 (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
2424 2011-10-05 Richard Guenther <rguenther@suse.de>
2426 * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
2427 with an embedded expression valueize and fold that as well.
2428 * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
2429 results from gimple_fold_stmt_to_constant_1.
2431 2011-10-05 Nick Clifton <nickc@redhat.com>
2433 * config/rx/rx.md (tablejump): Add missing label.
2434 (adddi3_internal): Mark operand 0 as early-clobbered.
2435 (smaxsi3): Revert previous delta.
2436 (adc_internal): Fix whitespace in generated asm.
2437 (adc_flags): Likewise.
2439 2011-10-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2441 * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2442 with the new widening_optab_handler.
2444 2011-10-05 Richard Guenther <rguenther@suse.de>
2446 PR tree-optimization/50609
2447 * gimple-fold.c (fold_array_ctor_reference): Also handle
2448 vector typed constructors.
2449 (fold_ctor_reference): Dispatch to fold_array_ctor_reference
2450 for vector typed constructors.
2452 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
2454 * config/i386/i386.c (ix86_emit_binop): New static function.
2455 (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
2457 (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2459 2011-10-04 David S. Miller <davem@davemloft.net>
2461 * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
2462 UNSPEC_XMUL): New unspecs.
2463 (muldi3_v8plus): Use output_v8plus_mult.
2464 (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
2465 New VIS 3.0 combiner patterns.
2466 (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
2467 fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
2468 umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
2469 xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
2471 * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
2472 (output_v8plus_mult): New function.
2473 * config/sparc/sparc-protos.h: Declare it.
2474 * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
2475 __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
2476 __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
2477 * doc/extend.texi: Document new builtins.
2479 2011-10-04 Richard Henderson <rth@redhat.com>
2481 * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2482 Avoid save_expr unless two_arguments.
2484 2011-10-04 Ozkan Sezer <sezeroz@gmail.com>
2486 * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2487 * config/i386/mingw32.h (CPP_SPEC): Likewise.
2489 2011-10-04 David S. Miller <davem@davemloft.net>
2491 * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2494 2011-10-04 Jakub Jelinek <jakub@redhat.com>
2496 PR tree-optimization/50604
2497 * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
2498 fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
2499 last argument to memcpy has size_type_node type instead of ssizetype.
2500 * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
2501 instead of TREE_TYPE (len) as type for newlen.
2503 PR tree-optimization/50522
2504 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2506 (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
2509 * fold-const.c (fold_unary_loc): Don't optimize
2510 POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
2511 casting the inner pointer if it isn't TYPE_RESTRICT.
2512 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
2513 casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
2515 2011-10-04 Joseph Myers <joseph@codesourcery.com>
2517 * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
2519 2011-10-04 Jan Hubicka <jh@suse.cz>
2521 * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
2522 * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
2523 * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
2524 * lto-cgraph.c (order_base): New static var.
2525 (lto_output_node): Stream in order.
2526 (lto_output_varpool_node): Stream out order.
2527 (input_node): Stream in order.
2528 (input_varpool_node): Stream out order.
2529 (input_cgraph_1): Initialize order base; update call of
2530 lto_input_toplevel_asms.
2532 2011-10-04 Georg-Johann Lay <avr@gjlay.de>
2535 * config/avr/avr-protos.h (avr_legitimize_reload_address): New
2537 * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
2539 * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
2540 function. Log if avr_log.legitimize_reload_address.
2542 2011-10-04 Eric Botcazou <ebotcazou@adacore.com>
2544 * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
2546 2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2548 * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
2549 variables. Fix second operand of DR. Swap inputs for sdiv_qrnnd.
2551 2011-10-03 David S. Miller <davem@davemloft.net>
2553 * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
2554 GSR_REG an input operand to UNSPEC instead of a parallel USE.
2555 (faligndata<V64I:mode>_vis): Likewise and use DI mode.
2556 (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
2557 Reference GSR_REG in DI mode, simplify convoluted expressions by using
2559 (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
2561 2011-10-03 Maxim Kuvyrkov <maxim@codesourcery.com>
2563 * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
2565 2011-10-03 Jakub Jelinek <jakub@redhat.com>
2566 Ian Lance Taylor <iant@google.com>
2568 * godump.c (go_output_typedef): Support printing enum values that
2569 don't fit in a signed HOST_WIDE_INT.
2571 2011-10-03 Anatoly Sokolov <aesok@post.ru>
2573 * config/cris/cris.c (cris_output_addr_const_extra): Make static.
2574 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
2575 * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
2576 * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
2578 2011-10-03 Anatoly Sokolov <aesok@post.ru>
2580 * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
2581 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
2582 * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
2583 * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
2585 2011-10-03 Steve Ellcey <sje@cup.hp.com>
2588 * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
2589 (gcc_cv_ld_static_option): Ditto.
2590 (gcc_cv_ld_dynamic_option): Ditto.
2591 * configure: Regenerate.
2593 2011-10-03 David S. Miller <davem@davemloft.net>
2595 * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
2596 and 'si' patterns which describe the GSR changes explicitly in the
2597 RTL using zero_extract.
2598 (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
2600 * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
2601 GSR_REG in a USE, since it's now a true arg to the UNSPEC.
2603 2011-10-03 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2605 * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
2606 if given expression can be expanded by the target.
2607 (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
2608 using target vector instructions.
2609 * optabs.h: New optab vshuffle.
2610 (expand_vec_shuffle_expr_p): New prototype.
2611 (expand_vec_shuffle_expr): New prototype.
2612 (vshuffle_optab): New optab.
2613 * genopinit.c: Adjust to support vecshuffle.
2614 * c-tree.h (c_build_vec_shuffle_expr): New prototype.
2615 * expr.c (expand_expr_real_2): Adjust.
2616 * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
2617 recognizing the cases of two and three arguments.
2618 (convert_arguments) (build_binary_op)
2619 (scalar_to_vector) (build_array_ref): Spurious whitespace.
2620 * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
2621 * tree.def: New tree code VEC_SHUFFLE_EXPR.
2622 * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
2623 * tree-vect-generic.c (vector_element): New function. Returns an
2624 element of the vector at the given position.
2625 (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
2626 by the backend or expand an expression piecewise.
2627 (expand_vector_operations_1): Adjusted.
2628 (gate_expand_vector_operations_noop): New gate function.
2629 * Makefile.in (tree-vect-generic.o): New include.
2630 * gimple.c (get_gimple_rhs_num_ops): Adjust.
2631 * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
2632 * passes.c: Move veclower down.
2633 * tree-pretty-print.c (dump_generic_node): Recognize
2634 VEC_SHUFFLE_EXPR as valid expression.
2635 * c-parser.c (c_parser_get_builtin_args): Helper function for the
2636 builtins with variable number of arguments.
2637 (c_parser_postfix_expression): Use a new helper function for
2638 RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
2639 * tree-ssa-operands: Adjust.
2640 * c-family/c-common.c: New __builtin_shuffle keyword.
2641 * c-family/c-common.h: New __builtin_shuffle keyword.
2642 * gcc/doc/extend.texi: Adjust.
2644 * gcc/config/i386/sse.md: (sseshuffint) New mode_attr. Correspondence
2645 between the vector and the type of the mask when shuffling.
2646 (vecshuffle<mode>): New expansion.
2647 * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
2648 * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
2649 (ix86_vectorize_builtin_vec_perm_ok): Adjust.
2651 2011-10-03 Jakub Jelinek <jakub@redhat.com>
2653 PR tree-optimization/50587
2654 * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
2655 arg0 is not a SSA_NAME.
2657 2011-10-03 Richard Sandiford <rdsandiford@googlemail.com>
2659 * ipa-inline-analysis.c (MAX_TIME): Update comment.
2661 2011-10-02 Richard Henderson <rth@redhat.com>
2662 David S. Miller <davem@davemloft.net>
2664 * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
2665 conditional insn type setting, we always emit a shift.
2666 (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
2667 (*lshrsi3_extend): Rename to *lshrsi3_extend1.
2668 * config/sparc/predicates.md (const_one_operand): Delete.
2670 2011-10-02 Gerald Pfeifer <gerald@pfeifer.com>
2672 * invoke.texi (SPARC Options): Refer to GNU/Linux.
2674 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
2676 * config/mips/mips.c (mips_frame_barrier): New function.
2677 (mips_expand_prologue): Call it after allocating stack space.
2678 (mips_deallocate_stack): New function.
2679 (mips_expand_epilogue): Call mips_frame_barrier and
2680 mips_deallocate_stack.
2682 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
2685 * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
2686 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
2687 (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
2689 2011-10-02 Jan Hubicka <jh@suse.cz>
2691 * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
2693 * cgraphunit.c (ipa_passes): Remove unrechable nodes.
2694 * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
2695 * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
2696 functions are reachable when address is taken.
2697 * tree-sra.c (modify_function): Free dominance info.
2699 2011-10-02 Jan Hubicka <jh@suse.cz>
2701 * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
2703 * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
2704 (reset_inline_summary): New function.
2705 (compute_inline_parameters, inline_node_removal_hook,
2706 inline_edge_removal_hook): Use it.
2707 (inline_free_summary): Reset holders correctly.
2708 (inline_generate_summary): Free summary before computing it.
2710 2011-10-02 Paolo Carlini <paolo.carlini@oracle.com>
2712 PR preprocessor/36819
2713 * incpath.c (merge_include_chains): Call free_path on
2714 heads[QUOTE] and tails[QUOTE].
2716 2011-10-02 Jan Hubicka <jh@suse.cz>
2719 * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
2720 when resolution is already availbale from plugin.
2721 (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
2722 * cgraph.c (ld_plugin_symbol_resolution): Add
2723 prevailing_def_ironly_exp.
2724 * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
2725 * ipa.c (varpool_externally_visible_p): IRONLY variables are never
2727 * varasm.c (resolution_to_local_definition_p): Add
2728 LDPR_PREVAILING_DEF_IRONLY_EXP.
2729 (resolution_local_p): Likewise.
2731 2011-10-01 David S. Miller <davem@davemloft.net>
2733 * config/sparc/sparc.opt (VIS3): New option.
2734 * doc/invoke.texi: Document it.
2735 * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
2736 not capable of such instructions.
2737 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2738 to 0x300 when TARGET_VIS3.
2739 * config/sparc/sparc-modes.def: Create 16-byte vector modes.
2740 * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
2741 UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
2742 (V64N8, VASS): New mode iterators.
2743 (vis3_shift, vis3_addsub_ss): New code iterators.
2744 (vbits, vconstr): New mode attributes.
2745 (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
2746 (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
2747 fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
2748 fmean16_vis, fpadd64_vis, fpsub64_vis,
2749 <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
2750 VIS 3.0 instruction patterns.
2751 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
2752 default when targetting capable cpus. TARGET_VIS3 implies
2753 TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
2754 (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
2755 (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
2757 * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
2758 __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
2759 __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
2760 __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
2761 __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
2762 __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
2763 __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
2764 __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
2765 * doc/extend.texi: Document new VIS 3.0 builtins.
2767 2011-10-01 Eric Botcazou <ebotcazou@adacore.com>
2769 * ira-color.c (assign_hard_reg): Fix typo.
2771 2011-09-30 H.J. Lu <hongjiu.lu@intel.com>
2773 * doc/extend.texi: Add missing ','.
2775 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
2777 * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
2778 Enable -fmodulo-sched at -O2 and above.
2779 * config/c6x/c6x.md (doloop_end): New expander.
2780 (mvilc, sploop, spkernel, loop_end): New patterns.
2781 (loop_end with memory destination splitter): New.
2782 * config/c6x/c6x.c: Include "hw-doloop.h".
2783 (enum unitreqs): New.
2784 (unit_req_table): New typedef.
2785 (unit_reqs): New static variable.
2786 (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
2787 res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
2788 hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
2789 hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
2790 (struct c6x_sched_context): New member last_scheduled_iter0.
2791 (init_sched_state): Initialize it.
2792 (c6x_variable_issue): Update it.
2793 (sploop_max_uid_iter0): New static variable.
2794 (c6x_sched_reorder_1): Be careful about issuing sploop.
2795 (c6x_reorg): Call c6x_hwlooops before the final schedule.
2797 2011-09-30 Georg-Johann Lay <avr@gjlay.de>
2800 * config/avr/avr-protos.h (avr_log_t): New field address_cost.
2801 * config/avr/avr.c (avr_address_cost): Use it.
2802 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2803 (avr_log_vadump): Unknown %-codes finish printing.
2805 2011-09-30 Jakub Jelinek <jakub@redhat.com>
2808 * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
2809 input constraints allow mem and not reg, pass true instead of
2810 false as second argument to maybe_fold_reference.
2812 PR tree-optimization/46309
2813 * fold-const.c (make_range, merge_ranges): Remove prototypes.
2814 (make_range_step): New function.
2815 (make_range): Use it.
2816 * tree.h (make_range_step): New prototypes.
2817 * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
2818 * tree-ssa-reassoc.c: Include diagnostic-core.h.
2819 (struct range_entry): New type.
2820 (init_range_entry, range_entry_cmp, update_range_test,
2821 optimize_range_tests): New functions.
2822 (reassociate_bb): Call optimize_range_tests.
2824 2011-09-30 Jakub Jelinek <jakub@redhat.com>
2825 Richard Guenther <rguenther@suse.de>
2827 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
2828 BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
2829 * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise. Fix
2830 handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
2831 (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
2832 BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
2834 2011-09-30 Jan Beulich <jbeulich@suse.com>
2836 * lto-cgraph.c (output_cgraph): Remove processing of
2837 'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
2838 (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
2839 lto_input_toplevel_asms() instead.
2840 * lto-section-in.c (lto_section_name): Add "asm" entry.
2841 * lto-streamer-in.c (lto_input_toplevel_asms): New.
2842 * lto-streamer-out.c (lto_output_toplevel_asms): New.
2843 * lto-streamer.h (LTO_minor_version): Bump.
2844 (enum lto_section_type): Add LTO_section_asm.
2845 (struct lto_asm_header): New.
2846 (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
2847 * tree-streamer.h (streamer_write_string_cst): Declare.
2848 * tree-streamer-out.c (write_string_cst): Rename to
2849 streamer_write_string_cst and make global. Handle incoming string
2851 (streamer_write_tree_header): Adjust call to renamed function.
2853 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
2855 * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
2856 modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
2857 modulo_last_stage): New static variables.
2858 (set_modulo_params, discard_delay_pairs_above): New functions.
2859 (struct delay_pair): New member stages.
2860 (htab_i2_traverse, htab_i1_traverse): New static functions.
2861 (record_delay_slot_pair): New arg stages. All callers changed.
2863 (pair_delay): Take stages into account.
2864 (add_delay_dependencies): Don't do so for stage pairs.
2865 (struct sched_block_state): New member modulo_epilogue.
2866 (save_backtrack_point): Don't set SHADOW_P for stage pairs.
2867 (unschedule_insns_until): Decrease modulo_insns_scheduled.
2868 Set HARD_DEP without using or.
2869 (resolve_dependencies): New static function.
2870 (prune_ready_list): New arg modulo_epilogue_p. All callers changed.
2871 If it is true, allow only insns with INSN_EXACT_TICK set.
2872 (schedule_block): Return bool, always true for normal scheduling,
2873 true or false depending on modulo scheduling success otherwise.
2874 Add bookkeeping for modulo scheduling, and call resolve_dependencies
2875 on everything left over after a modulo schedule.
2876 (haifa_sched_init): Remove check_cfg call. Clear modulo_ii.
2877 * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
2879 (set_modulo_params, discard_delay_pairs_above): Declare.
2880 * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
2881 * doc/invoke.texi (--param): Document it.
2883 * sched-ebb.c (schedule_ebb): No longer static. Remove declaration.
2884 New arg modulo_scheduling. All callers changed. Move note handling
2885 code here from schedule_ebbs.
2886 (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
2887 out of schedule_ebbs.
2888 (schedule_ebbs): Call them. Remove note handling code moved to
2890 * sched-int.h (schedule_ebb, schedule_ebbs_init,
2891 schedule_ebbs_finish): Declare.
2893 2011-09-30 Richard Guenther <rguenther@suse.de>
2896 * tree-cfg.c (verify_gimple_comparison): Compare component
2897 mode sizes for vector comparisons.
2899 2011-09-30 Revital Eres <revital.eres@linaro.org>
2901 * ddg.c (autoinc_var_is_used_p): New function.
2902 (create_ddg_dep_from_intra_loop_link,
2903 add_cross_iteration_register_deps): Call it.
2904 * ddg.h (autoinc_var_is_used_p): Declare.
2905 * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
2906 (sms_schedule): Handle instructions with REG_INC.
2908 2011-09-30 Revital Eres <revital.eres@linaro.org>
2910 * modulo-sched.c (generate_reg_moves): Skip instructions that
2911 do not set a register and verify no regmoves are created for
2912 !single_set instructions.
2914 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
2916 * hw-doloop.c (scan_loop): Compute register usage only for non-debug
2919 2011-09-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
2922 * config/arm/iterators.md (qhs_zextenddi_cstr): New.
2923 (qhs_zextenddi_op): New.
2924 * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
2925 * config/arm/predicates.md ("arm_extendqisi_mem_op"):
2926 Distinguish between ARM and Thumb2 states.
2928 2011-09-30 David S. Miller <davem@davemloft.net>
2930 * config/sparc/sparc.opt (VIS2): New option.
2931 * doc/invoke.texi: Document it.
2932 * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
2933 UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
2934 UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
2935 (define_attr type): New insn type 'edgen'.
2936 (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
2937 edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
2938 edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
2940 * niagara.md: Handle edgen.
2941 * niagara2.md: Likewise.
2942 * ultra1_2.md: Likewise.
2943 * ultra3.md: Likewise.
2944 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2945 to 0x200 when TARGET_VIS2.
2946 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
2947 default when targetting capable cpus. TARGET_VIS2 implies
2948 TARGET_VIS, clear and it when TARGET_FPU is disabled.
2949 (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
2950 (sparc_expand_builtin): Fix predicate indexing when builtin returns
2952 (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
2953 * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
2954 __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
2955 __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
2956 __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
2957 * doc/extend.texi: Document new VIS 2.0 builtins.
2959 2011-09-29 Nick Clifton <nickc@redhat.com>
2960 Bernd Schmidt <bernds@codesourcery.com>
2962 * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
2963 * config/frv/frvend.c: Likewise.
2964 * config/frv/frv.c (frv_function_prologue): Move misplaced
2965 CALL_ARG_LOCATION notes back to their proper locations.
2967 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
2970 * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
2971 * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
2973 (avr_legitimate_address_p): Use avr_edump to print log information
2974 filtered by avr_log.
2975 (extra_constraint_Q): Ditto.
2976 (avr_legitimize_address): Ditto.
2977 (avr_rtx_costs): Ditto. Rewrite as wrapper for avr_rtx_costs_1.
2978 (final_prescan_insn): Use avr_log.rtx_costs as filter.
2980 2011-09-29 Richard Sandiford <richard.sandiford@linaro.org>
2982 * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
2983 * config/arm/arm.h (MODES_TIEABLE_P): Use it.
2984 * config/arm/arm.c (arm_modes_tieable_p): New function. Allow
2985 NEON vector and structure modes to be tied.
2987 2011-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
2989 * graphite-scop-detection.c (make_close_phi_nodes_unique): New
2990 forward declaration.
2991 (remove_duplicate_close_phi): Detect and repair creation of
2992 duplicate close-phis for a containing loop.
2994 2011-09-27 Andi Kleen <ak@linux.intel.com>
2996 * gcc.c (get_local_tick). Rename to get_random_number. Read from
2997 /dev/urandom. Add getpid call.
2998 (compare_debug_dump_opt_spec_function): Drop getpid call.
3000 2011-09-26 Andi Kleen <ak@linux.intel.com>
3002 * toplev.c (init_local_tick): Try reading random seed
3005 2011-09-26 Andi Kleen <ak@linux.intel.com>
3007 * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
3008 * lto-streamer.c (lto_get_section_name): Remove crc32_string.
3009 Handle numerical random seed.
3010 * lto-streamer.h (lto_file_decl_data): Change id to
3011 unsigned HOST_WIDE_INT.
3012 * toplev.c (random_seed): Add.
3013 (init_random_seed): Change for numerical random seed.
3014 (get_random_seed): Return as HOST_WIDE_INT.
3015 (set_random_seed): Crc32 existing string.
3016 * toplev.h (get_random_seed): Change to numercal return.
3017 * tree.c (get_file_function_name): Remove CRC. Handle
3018 numerical random seed.
3020 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
3023 * config.gcc (extra_objs): Add avr-log.o for $target in:
3024 avr-*-rtems*, avr-*-*.
3025 * config/avr/t-avr (avr-log.o): New rule to compile...
3026 * config/avr/avr-log.c: ...this new file.
3027 * config/avr/avr.opt (mlog=): New option.
3028 * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
3029 (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
3030 (avr_log_set_avr_log): New prototype.
3031 (avr_log_t): New typedef.
3032 (avr_log): New declaration.
3033 * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
3035 2011-09-29 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
3037 * expr.c (do_store_flag): Expand vector comparison by
3038 building an appropriate VEC_COND_EXPR.
3039 * c-typeck.c (build_binary_op): Typecheck vector comparisons.
3040 (c_objc_common_truthvalue_conversion): Adjust.
3041 * tree-vect-generic.c (do_compare): Helper function.
3042 (expand_vector_comparison): Check if hardware supports
3043 vector comparison of the given type or expand vector piecewise.
3044 (expand_vector_operation): Treat comparison as binary
3045 operation of vector type.
3046 (expand_vector_operations_1): Adjust.
3048 2011-09-29 Richard Guenther <rguenther@suse.de>
3050 * tree.c (build_opaque_vector_type): Make opaque vectors
3051 variant types of the corresponding non-opaque type. Make
3052 sure to share opaque vector types properly.
3054 2011-09-29 David S. Miller <davem@davemloft.net>
3056 * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
3057 UNSPEC_ARRAY32): New unspec.
3058 (define_attr type): New type 'array'.
3059 (array{8,16,32}<P:mode>_vis): New patterns.
3060 * config/sparc/ultra1_2.md: Add reservations for 'array'.
3061 * config/sparc/ultra3.md: Likewise.
3062 * config/sparc/niagara.md: Likewise.
3063 * config/sparc/niagara2.md: Likewise.
3064 * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
3066 * config/sparc/visintrin.h (__vis_array8, __vis_array16,
3067 __vis_array32): New.
3068 * doc/extend.texi: Document new VIS builtins.
3070 * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
3071 (VIS pixel-compare insn): Just use <gcond:name>.
3073 * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
3074 code iterator used, so just use <code>. There are two mode iterators
3075 so explicitly use <GCM:gcm_name>.
3077 2011-09-29 Iain Sandoe <iains@gcc.gnu.org>
3079 * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
3082 2011-09-28 David S. Miller <davem@davemloft.net>
3084 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
3085 UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
3086 (UNSPEC_FCMP): New unspec.
3087 (gcond): New code iterator.
3088 (gcond_name): New code attr.
3089 (GCM): New mode iterator.
3090 (gcm_name): New mode attr.
3091 (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
3093 2011-09-28 Oleg Endo <oleg.endo@t-online.de>
3096 * config/sh/sh.md (negdi2): Move expansion into split to
3097 allow more combination options. Add T_REG clobber.
3098 (abssi2): New expander.
3099 (*negdi2, *abssi2, *negabssi2): New insns.
3100 (cneg): Change from insn to insn_and_split. Rename to
3101 negsi_cond. Add alternative for non-SH4.
3103 2011-09-28 Richard Sandiford <richard.sandiford@linaro.org>
3105 * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
3106 (neon_move_hi_quad_<mode>): Likewise.
3107 (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
3109 2011-09-28 Nick Clifton <nickc@redhat.com>
3111 * config/rx/predicates.md (rx_minmax_operand): New predicate.
3112 Accepts immediates and a restricted subset of MEMs.
3113 * config/rx/rx.md (int_modes): New iterator.
3114 (smaxsi3, sminsi3): Delete and replace with...
3115 (smax<int_mode>3, smin<int_mode>3): New patterns.
3116 (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
3118 2011-09-28 Richard Guenther <rguenther@suse.de>
3121 * fold-const.c (try_move_mult_to_index): Handle &a.array the
3122 same as &a.array[0].
3124 2011-09-28 Kai Tietz <ktietz@redhat.com>
3126 * configure.ac: Add test for new section attribute
3127 specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
3128 * config.in: Regenerated.
3129 * configure: Regenerated.
3130 * config/i386/winnt.c (i386_pe_asm_named_section): Emit
3131 new section flag "e" for excluded sections, if supported.
3132 Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
3134 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
3136 * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
3139 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
3141 * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
3144 2011-09-27 Sriraman Tallam <tmsriram@google.com>
3146 * output.h (SECTION_EXCLUDE): New macro.
3147 * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
3149 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
3151 * fwprop.c (forward_propagate_and_simplify): After checking
3152 reg/subreg combinations, check whether the modes are the same.
3154 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
3155 Richard Sandiford <rdsandiford@googlemail.com>
3157 * config/mips/mips.c (mips_add_cfa_restore): New function.
3158 (mips16e_save_restore_reg): Use it.
3159 (mips_restore_reg): Likewise. Split double FPRs for
3160 REG_CFA_RESTORE notes.
3162 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
3166 * tree-sra.c (build_ref_for_model): Use the type of the field as
3167 the type of the COMPONENT_REF.
3169 2011-09-27 Jeff Law <law@redhat.com>
3171 * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument. Scale
3172 non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
3173 (find_if_case_1): Use the probability of the THEN clause when
3174 determining if speculation is profitable.
3175 (find_if_case_2): Similarly for the ELSE clause.
3177 2011-09-27 Jakub Jelinek <jakub@redhat.com>
3179 * common.opt: Add -foptimize-strlen option.
3180 * Makefile.in (OBJS): Add tree-ssa-strlen.o.
3181 (tree-sssa-strlen.o): Add dependencies.
3182 * opts.c (default_options_table): Enable -foptimize-strlen
3183 by default at -O2 if not -Os.
3184 * passes.c (init_optimization_passes): Add pass_strlen
3185 after pass_object_sizes.
3186 * timevar.def (TV_TREE_STRLEN): New timevar.
3187 * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
3188 * tree-pass.h (pass_strlen): Declare.
3189 * tree-ssa-strlen.c: New file.
3190 * c-decl.c (merge_decls): If compatible stpcpy prototype
3191 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
3193 2011-09-27 Tom de Vries <tom@codesourcery.com>
3196 * tree-ssa-tail-merge.c: New file.
3197 (struct same_succ_def): Define.
3198 (same_succ, const_same_succ): New typedef.
3199 (struct bb_cluster_def): Define.
3200 (bb_cluster, const_bb_cluster): New typedef.
3201 (struct aux_bb_info): Define.
3202 (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
3203 (gvn_uses_equal): New function.
3204 (same_succ_print, same_succ_print_traverse, update_dep_bb)
3205 (stmt_update_dep_bb, local_def, same_succ_hash)
3206 (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
3207 (same_succ_reset): New function.
3208 (same_succ_htab, same_succ_edge_flags)
3209 (deleted_bbs, deleted_bb_preds): New var.
3210 (debug_same_succ): New function.
3211 (worklist): New var.
3212 (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
3213 (init_worklist, delete_worklist, delete_basic_block_same_succ)
3214 (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
3215 (print_cluster, debug_cluster, update_rep_bb)
3216 (add_bb_to_cluster, new_cluster, delete_cluster): New function.
3217 (all_clusters): New var.
3218 (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
3219 (merge_clusters, set_cluster): New function.
3220 (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
3221 (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
3222 (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
3223 (find_clusters_1, find_clusters): New function.
3224 (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
3225 (update_bbs): New var.
3226 (apply_clusters): New function.
3227 (update_debug_stmt, update_debug_stmts): New function.
3228 (tail_merge_optimize): New function.
3229 tree-pass.h (tail_merge_optimize): Declare.
3230 * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
3231 * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
3232 (tree-ssa-tail-merge.o): New rule.
3233 * opts.c (default_options_table): Set OPT_ftree_tail_merge by
3234 default at OPT_LEVELS_2_PLUS.
3235 * tree-ssa-sccvn.c (vn_valueize): Move to ...
3236 * tree-ssa-sccvn.h (vn_valueize): Here.
3237 * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
3238 * common.opt (ftree-tail-merge): New switch.
3239 * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
3240 (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
3241 * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
3242 (-ftree-tail-merge, max-tail-merge-comparisons)
3243 (max-tail-merge-iterations): New item.
3245 2011-09-27 Jan Hubicka <jh@suse.cz>
3247 * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
3249 2011-09-27 Jan Hubicka <jh@suse.cz>
3251 * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
3252 parameters passed by reference; handle loads from non-SSA scalars
3253 and update comments.
3255 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
3257 PR rtl-optimization/50249
3258 * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
3259 instead of opnum and type. All callers changed. Remove useless
3261 Search forward for other reloads of the same type for the same operand
3262 using the same register; if any are found, return false.
3263 (reload_regs_reach_end_p): Same argument changes; all callers changed.
3265 2011-09-27 Andi Kleen <ak@linux.intel.com>
3266 Jan Hubicka <jh@suse.cz>
3268 * doc/invoke.texi (ffat-lto-objects): Document.
3269 * toplev.c (compile_file): Do not output assembly when doing slim lto;
3270 Output __gnu_slim_lto when doing slim lto.
3271 * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
3272 (cgraph_optimize): Return early when doing slim lto.
3273 * opts.c (finish_options): Complain about lack of linker plugin
3274 when doing slim lto.
3275 * common.opt (ffat-lto-objects): New.
3277 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
3279 * ipa-inline-analysis.c (predicate_probability): Avoid comparison
3280 between signed and unsigned.
3282 2011-09-27 Ira Rosen <ira.rosen@linaro.org>
3284 * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
3286 (vectorizable_type_promotion): Likewise.
3287 (vect_analyze_stmt): Call vectorizable_type_demotion and
3288 vectorizable_type_promotion for basic blocks.
3289 (supportable_widening_operation): Don't assume loop vectorization.
3290 * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
3291 basic blocks. Update vectorization factor for basic block
3293 (vect_analyze_slp_instance): Allow multiple types for basic block
3294 vectorization. Recheck unrolling factor after construction of SLP
3297 2011-09-27 Richard Guenther <rguenther@suse.de>
3299 * tree-object-size.c (compute_object_sizes): Fix dumping of
3302 2011-09-27 Richard Guenther <rguenther@suse.de>
3304 PR tree-optimization/50363
3305 * tree-ssa-pre.c (create_expression_by_pieces): Handle
3306 pointer conversions in POINTER_PLUS_EXPRs properly.
3308 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
3310 * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
3311 (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
3312 (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
3313 (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
3314 that produce subreg moves. Define using VQX iterators.
3316 2011-09-27 Georg-Johann Lay <avr@gjlay.de>
3318 * config/avr/avr.md (ashrqi3): Split alternative "n"
3319 into its remaining parts C03, C04, C05, C06, C07 and describe
3320 impact in CC by attribute "cc" appropriately.
3321 * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
3324 2011-09-27 Jakub Jelinek <jakub@redhat.com>
3326 * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
3327 from 3 x MAX_MACHINE_MODE.
3328 (CONSTM1_RTX): Define.
3329 * emit-rtl.c (const_tiny_rtx): Change into array of
3330 4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
3331 (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
3333 (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
3334 MODE_VECTOR_INT modes.
3335 * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
3336 Optimize if one operand is CONSTM1_RTX.
3337 * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
3340 2011-09-26 David S. Miller <davem@davemloft.net>
3342 * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
3343 (fcmp{le,ne,gt,eq}{16,32}): Likewise.
3344 * config/sparc/visintrin.h: Update edge and pixel-compare
3345 intrinsics to return 'long' instead of 'int'.
3346 * doc/extend.texi: Update documentation to match.
3347 * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
3348 flat, allow any instruction. Otherwise, when V9 allow parallels
3349 which consist only of sets to registers outside of %o0 to %o5.
3350 (sparc_vis_init_builtins): Update VIS builtin types for edge
3353 * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
3354 is enabled, mark %gsr as global.
3355 * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
3356 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
3358 * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
3359 which will now define __VIS and __VIS__ when -mvis is enabled.
3360 * config/sparc/t-sparc: Likewise.
3361 * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
3362 and add t-sparc to tmake_file for all sparc targets.
3363 * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
3364 * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
3366 * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
3367 builtins for VIS vector addition and subtraction.
3368 * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
3369 __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
3370 __vis_fpsub32, __vis_fpsub32s): New.
3371 * doc/extend.texi: Document new VIS intrinsics.
3373 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3375 * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
3376 * config/avr/avr.c (avr_out_compare): Print shorter sequence for
3377 EQ/NE comparisons against +/-1 in the case of unused-after,
3380 2011-09-26 Jakub Jelinek <jakub@redhat.com>
3382 * gimple-fold.c (gimplify_and_update_call_from_tree): Set
3383 gctx.into_ssa after push_gimplify_context.
3385 * gimple.c (gimple_build_call_valist): New function.
3386 * gimple.h (gimple_build_call_valist): New prototype.
3387 * tree-ssa-propagate.c (finish_update_gimple_call): New function.
3388 (update_gimple_call): Likewise.
3389 (update_call_from_tree): Use finish_update_gimple_call.
3390 * tree-ssa-propagate.h (update_gimple_call): New prototype.
3392 2011-09-26 Richard Guenther <rguenther@suse.de>
3394 PR tree-optimization/50472
3395 * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
3396 volatile references.
3398 2011-09-26 Bingfeng Mei <bmei@broadcom.com>
3400 * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
3401 * target.def: (addr_space_subset_p): Likewise.
3403 2011-09-26 Tom de Vries <tom@codesourcery.com>
3405 * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
3406 * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
3407 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
3410 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3413 * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
3414 * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
3415 output_reload_insisf.
3416 (adjust_len): Set default to "no".
3417 Remove alternative "yes". Add alternatives: "mov8", "mov16",
3418 "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
3419 "lshrhi", "ashlsi, "ashrsi", "lshrsi".
3420 (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
3421 *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
3422 *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
3423 *lshrsi3_const): Set attribute "adjust_len".
3424 * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
3425 (output_movsisf): Don't pass insn to output_reload_insisf.
3426 (adjust_insn_length): Handle new alternatives to adjust_len.
3427 Remove handling of ADJUST_LEN_YES. Clean-up code.
3429 2011-09-26 Eric Botcazou <ebotcazou@adacore.com>
3431 * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
3432 may_trap_p to detect loads that may trap of fault.
3434 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3436 * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
3437 * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
3438 (*reload_inhi): Use it. Adapt call to output_reload_inhi to new
3440 (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
3441 * config/avr/avr.c: Rename output_reload_insisf_1 to
3442 output_reload_in_const.
3443 (avr_popcount_each_byte): Handle SFmode, too.
3444 (output_reload_in_const): Change so it can handle HI loads, too.
3445 Use avr_popcount_each_byte to work out if scratch register must be
3447 (output_reload_inhi): Rewrite using output_reload_in_const and...
3448 (output_movhi): ...use it to print constants' loads.
3449 (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
3451 2011-09-25 David S. Miller <davem@davemloft.net>
3453 * config/sparc/constraints.md (C, P, Z): New constraints for
3454 const_doube, const_int, and const_vector "all ones" values.
3455 Make unused constraint letters comment match reality.
3456 * config/sparc/predicates.md (const_all_ones_operand,
3457 register_or_zero_or_all_ones_operand): New predicates.
3458 * config/sparc/sparc.c (sparc_expand_move): Allow all ones
3459 as well as zero constants when VIS.
3460 (sparc_legitimate_constant_p): Likewise.
3461 * config/sparc/sparc.md (movsi_insn): Add fones alternative.
3462 (movsf_insn): Likewise
3463 (movdi_insn_sp64): Add fone alternative.
3464 (movdf_insn_sp32_v9): Likewise.
3465 (movdf_insn_sp64): Likewise.
3467 * configure.ac: Add feature check to make sure the assembler
3468 supports the FMAF, HPC, and VIS 3.0 instructions found on
3469 Niagara-3 and later cpus.
3470 * configure: Rebuild.
3471 * config.in: Likewise.
3472 * config/sparc/sparc.opt: New option '-mfmaf'.
3473 * config/sparc/sparc.md: Add float fused multiply-add patterns.
3474 * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
3475 (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
3476 * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
3477 ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
3478 * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
3479 by default for Niagara-3 and later. Turn it off if TARGET_FPU is
3481 (sparc_rtx_costs): Handle 'FMA'.
3482 * doc/invoke.texi: Document -mfmaf.
3484 2011-09-25 Jakub Jelinek <jakub@redhat.com>
3486 * tree-ssa-structalias.c (intra_create_variable_infos): Treat
3487 TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
3488 DECL_BY_REFERENCE parameters.
3490 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
3492 * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
3493 if there is no outgoing edge.
3495 * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
3498 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
3500 * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
3501 of vect_analyze_bb here.
3502 (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
3504 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
3506 * tree-data-ref.c (dr_analyze_innermost): Add new argument.
3507 Allow not simple iv if analyzing basic block.
3508 (create_data_ref): Update call to dr_analyze_innermost.
3509 (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
3510 * tree-loop-distribution.c (generate_memset_zero): Likewise.
3511 * tree-predcom.c (find_looparound_phi): Likewise.
3512 * tree-data-ref.h (dr_analyze_innermost): Add new argument.
3514 2011-09-24 David S. Miller <davem@davemloft.net>
3516 * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
3517 (SPARC_GSR_REG): Define.
3518 (FIXED_REGISTERS): Mark GSR as fixed.
3519 (CALL_USED_REGISTERS): Mark GSR as call used.
3520 (HARD_REGNO_NREGS): GSR is always 1 register.
3521 (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
3522 (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
3523 (REGISTER_NAMES): Add "%gsr".
3524 * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
3525 (UNSPEC_WRGSR): New unspec.
3526 (GSR_REG): New constant.
3527 (type): Add new insn type 'gsr'.
3528 (fpack16_vis, fpackfix_vis, fpack32_vis,
3529 faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
3530 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
3531 rdgsr_v8plus): New expanders and insns.
3532 (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
3533 using patterns which show that this is a plus in addition to a
3534 modification of GSR_REG, instead of an unspec.
3535 * config/sparc/ultra1_2.md: Handle 'gsr'.
3536 * config/sparc/ultra3.md: Likewise.
3537 * config/sparc/niagara.md: Likewise.
3538 * config/sparc/niagara2.md: Likewise.
3539 * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
3541 (sparc_option_override): Make -mvis imply -mv8plus.
3542 (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
3544 (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
3545 __builtin_vis_read_gsr.
3546 (sparc_expand_buildin): Handle builtins that take one argument and
3548 (sparc_fold_builtin): Never fold writes to %gsr.
3549 * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
3550 * doc/extend.texi: Document new VIS intrinsics.
3552 2011-09-23 Jan Hubicka <jh@suse.cz>
3554 * ipa-inline-transform.c (inline_call): Add comment.
3555 * ipa-inline.h (inline_param_summary): New structure and vector.
3556 (struct inline_edge_summary): Add param field.
3557 * ipa-inline-analysis.c (CHANGED): New constant.
3558 (add_clause): Handle CHANGED and NOT_CONSTANT.
3559 (predicate_probability): New function.
3560 (dump_condition): Dump CHANGED predicate.
3561 (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
3562 of unknown function wide invariant.
3563 (evaluate_conditions_for_edge): Handle change probabilities.
3564 (inline_edge_duplication_hook): Copy param summaries.
3565 (inline_edge_removal_hook): Free param summaries.
3566 (dump_inline_edge_summary): Fix dumping of indirect edges and callee
3567 sizes; dump param summaries.
3568 (will_be_nonconstant_predicate): Use CHANGED predicate.
3569 (record_modified_bb_info): New structure.
3570 (record_modified): New function.
3571 (param_change_prob): New function.
3572 (estimate_function_body_sizes): Compute param summaries.
3573 (estimate_edge_size_and_time): Add probability argument.
3574 (estimate_node_size_and_time): Add inline_param_summary argument;
3575 handle predicate probabilities.
3576 (remap_predicate): Fix formating.
3577 (remap_edge_change_prob): New function.
3578 (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
3579 (remap_edge_predicates): ... this one.
3580 (inline_merge_summary): Remap edge summaries; handle predicate
3581 probabilities; remove param summaries after we are done.
3582 (do_estimate_edge_time): Update.
3583 (do_estimate_edge_growth): Update.
3584 (read_inline_edge_summary): Read param info.
3585 (inline_read_summary): Fix formating.
3586 (write_inline_edge_summary): Write param summaries.
3588 2011-09-23 Jakub Jelinek <jakub@redhat.com>
3590 * config/i386/i386.c (ix86_print_operand): Handle %~.
3591 (ix86_print_operand_punct_valid_p): Return true also for '~'.
3592 * config/i386/sse.md (i128): New mode_attr.
3593 (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
3594 avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
3595 *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
3596 vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
3597 patterns, use "<sseinsnmode>" for "mode" attribute.
3598 (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
3599 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
3600 %~128 in the patterns, use "OI" for "mode" attribute.
3602 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
3605 * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
3607 (*cmpqi_sign_extend): Use s8_operand.
3608 (*cmphi, *cmpsi): Rewrite using avr_out_compare.
3609 * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
3611 (out_tsthi, out_tstsi): Remove prototypes.
3612 (avr_out_tsthi, avr_out_tstsi): New prototypes.
3613 * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
3614 (avr_asm_len): Negative length now sets *plen to -length.
3615 (compare_sign_p): Return bool instead of int.
3616 (compare_diff_p, compare_eq_p): Ditto and make static.
3617 (avr_out_tsthi): New function.
3618 (avr_out_tstsi): New function.
3619 (avr_out_compare): New function.
3620 (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
3623 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
3626 * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
3627 (addsi3): Rewrite using QI scratch register. Adjust text
3628 peepholes using plus:SI.
3629 (*addsi3_zero_extend.hi): New insn.
3630 (*subsi3_zero_extend.hi): New insn.
3631 (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
3632 (*subsi3_zero_extend): Ditto.
3633 (subsi3): Change predicate #2 to register_operand.
3634 * config/avr/avr-protos.h (avr_out_plus): New prototype.
3635 (avr_out_plus_1): New static function.
3636 (avr_out_plus): New function.
3637 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
3639 2011-09-23 Jakub Jelinek <jakub@redhat.com>
3641 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
3642 GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
3644 2011-09-23 Ian Lance Taylor <iant@google.com>
3646 * godump.c (go_define): Treat a single character in single quotes,
3647 or a string, as an operand.
3649 2011-09-23 Martin Jambor <mjambor@suse.cz>
3651 * ipa-prop.h (jump_func_type): Updated comments.
3652 (ipa_known_type_data): New type.
3653 (ipa_jump_func): Use it to describe known type jump functions.
3654 * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
3655 reflect the new known type jump function contents.
3656 (compute_known_type_jump_func): Likewise.
3657 (combine_known_type_and_ancestor_jfs): Likewise.
3658 (try_make_edge_direct_virtual_call): Likewise.
3659 (ipa_write_jump_function): Likewise.
3660 (ipa_read_jump_function): Likewise.
3661 * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
3662 (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
3663 (propagate_accross_jump_function): Likewise.
3665 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
3668 * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
3669 (rotlqi3_4): Turn insn into expander.
3670 (*rotlqi3): New insn.
3671 (rotlhi3, rotlsi3): Support rotate left/right by 1.
3672 (*rotlhi2.1, *rotlhi2.15): New insns.
3673 (*rotlsi2.1, *rotlsi2.31): New insns.
3674 * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
3676 2011-09-23 Bin Cheng <bin.cheng@arm.com>
3678 * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
3680 2011-09-22 Maxim Kuvyrkov <maxim@codesourcery.com>
3682 * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
3684 2011-09-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3686 * reload.c (find_reloads): Set operand_mode to Pmode for address
3687 operands consisting of just a CONST_INT.
3689 2011-09-22 Uros Bizjak <ubizjak@gmail.com>
3692 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
3693 blendv, force op_true to register if it doesn't satisfy
3694 nonimmediate_operand predicate.
3696 2011-09-22 Richard Sandiford <rdsandiford@googlemail.com>
3700 * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
3701 get the locate.where_pad value for register-only arguments.
3702 * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
3703 (arm_pad_reg_upward): Handle null types.
3705 2011-09-22 Jan Hubicka <jh@suse.cz>
3707 * ipa-inline-analysis.c: Fix overly long lines.
3709 2011-09-22 Jan Hubicka <jh@suse.cz>
3711 * ipa-inline-transform.c (inline_call): Always update jump functions
3713 * ipa-inline.c (ipa_inline): Likewise; do not call
3714 ipa_create_all_structures_for_iinln.
3715 (ipa_inline): Always free jump functions.
3716 * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
3717 (remap_edge_predicates): Fix pasto.
3718 (inline_merge_summary): Remove nlined edge predicate; remove hack.
3719 (inline_analyze_function): Always initialize jump functions.
3720 (inline_generate_summary): Likewise.
3721 (inline_write_summary): Always write jump functions when ipa-cp
3723 (inline_read_summary): Always read jump functions when ipa-cp
3725 * ipa-prop.c (iinlining_processed_edges): Remove.
3726 (update_indirect_edges_after_inlining): Do not use
3727 iinlining_processed_edges; instead set param_index to -1.
3728 (propagate_info_to_inlined_callees): Only try to indirect inlining
3729 when asked to do so; update jump functions of indirect calls, too;
3730 remove jump functions of the inlined edge.
3731 (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
3732 (ipa_create_all_structures_for_iinln): Remove.
3733 (ipa_free_all_structures_after_iinln): Do not free
3734 iinlining_processed_edges.
3735 * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
3737 2011-09-22 Richard Sandiford <richard.sandiford@linaro.org>
3739 * config/arm/predicates.md (expandable_comparison_operator): New
3740 predicate, extracted from...
3741 (arm_comparison_operator): ...here.
3742 * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
3743 (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
3744 (movdfcc): Use expandable_comparison_operator.
3746 2011-09-22 Georg-Johann Lay <avr@gjlay.de>
3750 * config/avr/avr-protos.h (avr_out_bitop): New prototype.
3751 (avr_popcount_each_byte): New prototype.
3752 * config/avr/avr.c (avr_popcount): New static function.
3753 (avr_popcount_each_byte): New function.
3754 (avr_out_bitop): New function.
3755 (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
3756 avr_out_bitop. Cleanup code.
3757 * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
3758 (Ca4, Co4, Cx4): New constraints.
3759 * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
3761 (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
3762 (andsi3, iorsi3, xorsi3): Ditto.
3763 (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
3765 2011-09-22 Ira Rosen <ira.rosen@linaro.org>
3767 PR tree-optimization/50451
3768 * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
3769 constant operands in reduction.
3770 (vect_get_slp_defs): Don't create vector operand for NULL scalar
3773 2011-09-22 David S. Miller <davem@davemloft.net>
3775 * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
3776 fpack16, fpack32, fpackfix as const.
3778 * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
3779 I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
3780 constants. Use them everywhere.
3782 2011-09-22 Oleg Endo <oleg.endo@t-online.de>
3784 * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
3785 Added AND special case. Adapted comments.
3786 (sh_rtx_costs): Added XOR and IOR case.
3788 2011-09-21 Jan Hubicka <jh@suse.cz>
3790 * ipa-inline-analsis.c (compute_inline_parameters): Set
3791 cfun and current_function_decl.
3793 2011-09-21 Jan Hubicka <jh@suse.cz>
3795 * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
3796 handled components in parameter of builtin_constant_p.
3797 (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
3799 2011-09-21 Jan Hubicka <jh@suse.cz>
3801 * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
3802 * ipa-inline.h (estimate_edge_time): Fix pasto.
3803 * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
3805 2011-09-21 Jakub Jelinek <jakub@redhat.com>
3807 * config/i386/i386.c (ix86_expand_sse_movcc): Use
3808 blendvps, blendvpd and pblendvb if possible.
3810 2011-09-21 Uros Bizjak <ubizjak@gmail.com>
3813 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
3814 operand 1 predicate to register_operand and operand 2 predicate
3815 to nonimmediate_operand.
3816 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
3817 xop_pcmov, force op_true to register. Also, force op_false to
3818 register if it doesn't satisfy nonimmediate_operand predicate.
3820 2011-09-21 Kirill Yukhin <kirill.yukhin@intel.com>
3822 * config/i386/bmi2intrin.h (_mulx_u64): New.
3825 2011-09-21 Jan Hubicka <jh@suse.cz>
3827 PR tree-optimization/50433
3828 * ipa-inline-analysis.c (eliminated_by_inlining_prob):
3829 Use get_base_address.
3831 2011-09-21 Jakub Jelinek <jakub@redhat.com>
3833 * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
3834 nonimmediate_operand instead of register_operand predicate for operands
3835 1 and 2, force them into registers if expanding them as comparison.
3836 (<code><mode>3 umaxmin:VI124_128 expander): Similarly. For UMAX
3837 V8HImode force into register just operand 1.
3839 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
3842 * config/avr/avr.c (avr_function_arg_advance): Change error to
3843 warning if a fixed register is needed as function argument.
3845 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
3849 * config/avr/avr.md (adjust_len): New insn attribute.
3850 (*reload_insi, *reload_insf): Use it.
3851 (*movsi, *movsf): Use new interface of output_movsisf.
3852 * config/avr/avr-protos.h (output_movsisf): Change prototype.
3853 * config/avr/avr.c (output_movsisf): Ditto.
3854 (adjust_insn_length): Use insn attribute "adjust_len" to adjust
3855 lengths of insns *reload_insi, *reload_insf.
3856 (output_reload_insisf_1): New static function.
3857 (output_reload_insisf): Use it.
3859 2011-09-21 David S. Miller <davem@davemloft.net>
3861 * config/sparc/sparc.c (def_builtin): Change from macro into function.
3862 (def_builtin_const): New.
3863 (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
3864 other than alignaddr and falignaddr.
3866 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
3867 UNSPEC_FCMPEQ): New unspec codes.
3868 (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
3869 fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
3870 * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
3871 new pixel compare VIS patterns.
3872 * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
3873 __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
3874 __vis_fcmpeq16, __vis_fcmpeq32): New.
3875 * doc/extend.texi: Document new pixel compare VIS intrinsics.
3877 2011-09-21 Tom de Vries <tom@codesourcery.com>
3879 * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
3881 2011-09-20 David S. Miller <davem@davemloft.net>
3883 * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
3884 (aligneddrl<P:mode>_vis): New pattern.
3885 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
3886 edge32l_vis): Adjust to take Pmode arguments, and return SImode.
3887 * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
3888 alignaddrl insn, and adjust edge operations for updated types.
3889 * config/sparc/visintrin.h: Likewise.
3890 * doc/extend.texi: Make typing in VIS documentation match reality.
3892 2011-09-20 Terry Guo <terry.guo@arm.com>
3894 * config/arm/arm-arches.def: Add armv6s-m.
3895 * config/arm/arm-tables.opt: Regenerate.
3897 2011-09-20 Wei Guozhi <carrot@google.com>
3899 PR rtl-optimization/49452
3900 * postreload.c (reload_combine): Invalidate use information when across
3903 2011-09-19 Maxim Kuvyrkov <maxim@codesourcery.com>
3905 * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
3906 Remove maintenance overhead.
3907 (haifa_sched_init, sched_finish): Update.
3909 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
3911 * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
3912 to calculate unit, prefix_rep and prefix_data16 attributes.
3913 (*mov<mode>_internal): Ditto for unit attribute.
3914 (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
3915 (*movv2sf_internal): Ditto.
3916 * config/i386/sse.md (VI1248_256): Remove mode iterator.
3917 (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
3918 (*avx2_eq<mode>3): Ditto.
3919 (avx2_gt<mode>3): Ditto.
3921 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
3923 * config/i386/i386.md (maxmin): New code iterator.
3924 * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
3925 from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
3927 (*avx2_<maxmin:code><mode>3): Macroize isn from
3928 *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
3929 maxmin code iterator.
3930 (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
3931 (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
3932 <umaxmin:code>v16qi3.
3934 2011-09-19 Alan Modra <amodra@gmail.com>
3935 Michael Meissner <meissner@linux.vnet.ibm.com>
3938 * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
3939 split the load of the indirect function's TOC from the call to
3940 prevent the compiler from moving the load of the new TOC above
3941 code that references the current function's TOC.
3942 (call_indirect_aix<ptrsize>_internal): Ditto.
3943 (call_indirect_aix<ptrsize>_nor11): Ditto.
3944 (call_indirect_aix<ptrsize>_internal2): Ditto.
3945 (call_value_indirect_aix<ptrsize>): Ditto.
3946 (call_value_indirect_aix<ptrsize>_internal): Ditto.
3947 (call_value_indirect_aix<ptrsize>_nor11): Ditto.
3948 (call_value_indirect_aix<ptrsize>_internal2): Ditto.
3950 2011-09-19 Jakub Jelinek <jakub@redhat.com>
3952 * config/i386/sse.md (*sse4_1_extractps): Change into
3953 define_insn_and_split, add =x 0 n and =x x n alternatives
3954 and split them after reload.