1 2011-10-19 Jan Hubicka <jh@suse.cz>
3 * ipa-inline.c (inline_small_functions): Always update all calles after
6 2011-10-19 Jan Hubicka <jh@suse.cz>
9 * ipa-inline.c (inline_small_functions): Fix checking code to not make
10 effect on fibheap stability.
12 2011-10-20 Maxim Kuvyrkov <maxim@codesourcery.com>
14 * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
16 2011-10-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
19 * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
22 2011-10-20 Richard Guenther <rguenther@suse.de>
24 * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
25 and rotates to the set of expensive operations.
27 2011-10-19 David S. Miller <davem@davemloft.net>
29 * config/sparc/sparc.c (sparc_expand_move): Use
31 (sparc_emit_set_const32): Likewise.
32 (sparc_emit_set_const64_longway): Likewise.
33 (sparc_emit_set_const64): Likewise.
34 (sparc_legitimize_pic_address): Likewise.
35 (memory_ok_for_ldd): Likewise.
37 2011-10-20 Dehao Chen <dehao@google.com>
39 * profile.c (compute_branch_probabilities): Compute and dump the
40 overlap between the static estimation and the instrumentation profile.
41 (OVERLAP_BASE): New macro.
42 (compute_frequency_overlap): New function
44 2011-10-19 Jakub Jelinek <jakub@redhat.com>
46 * config/i386/i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use
47 d->op1 instead of d->op0 for the second vpshufb.
48 (expand_vec_perm_even_odd_1): For V8SImode fix vpshufd immediates.
49 (ix86_expand_vec_perm_const): If mask indicates two operands are
50 needed, but both are the same and expanding them as d.op0 == d.op1
51 failed, retry with d.op0 != d.op1.
52 (ix86_expand_vec_perm_builtin): Likewise. Handle sorry printing
53 also for d.nelt == 32.
56 * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
59 2011-10-19 Bernd Schmidt <bernds@codesourcery.com>
61 * regrename.h: New file.
62 * regrename.c: Include it. Also include "emit-rtl.h".
63 (struct du_head, struct du_chain, du_head_p DEF_VEC and
64 DEF_VEC_ALLOC_P): Move to regrename.h.
65 (do_replace): Remove declaration.
66 (insn_rr): New variable.
67 (cur_operand): New static variable.
68 (regrename_chain_from_id): Renamed from chain_from_id and no longer
69 static. All callers changed.
70 (record_operand_use): New static function.
71 (scan_rtx_reg): Use it.
72 (find_best_rename_reg): New function, broken out of rename_chains.
73 (rename_chains): Use it. Don't update chain regno and nregs here, ...
74 (regrename_do_replace): ... do it here instead. Renamed from
75 do_replace, and no longer static. All callers changed.
76 (regrename_analyze): No longer static. New arg bb_mask.
77 All callers changed. If bb_mask is nonzero, use it to limit the
78 number of basic blocks we analyze. If we failed to analyze a block,
79 clear insn operand data.
80 (record_out_operands): New arg insn_info. Update cur_operand if it is
82 (build_def_use): If insn_rr is nonnull, pass an insn_info to
83 record_out_operands, and update cur_operand here as well.
84 (regrename_init, regrename_finish): New functions.
85 (regrename_optimize): Use them.
86 * Makefile.in (regrename.o): Adjust dependencies.
88 2011-10-19 Tom de Vries <tom@codesourcery.com>
90 PR tree-optimization/50769
91 * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
92 unconditionally. Handle case that phi_vuse2 is not an SSA_NAME. Add
93 dummy argument .MEM to phi when increasing number of arguments of phi by
94 redirecting edges to the block with phi.
96 2011-10-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
99 * configure.ac: Save and restore CXXFLAGS around
100 gcc_AC_CHECK_DECLS uses.
101 Check for madvise() declaration with g++ if --enable-build-with-cxx.
102 * configure: Regenerate.
103 * config.in: Regenerate.
104 * ggc-page.c (USING_MADVISE): Also check HAVE_DECL_MADVISE.
106 2011-10-19 Alexandre Oliva <aoliva@redhat.com>
109 * var-tracking.c (loc_exp_dep, onepart_aux): New structs.
110 (variable_part): Replace offset with union.
111 (enum onepart_enum, onepart_enum_t): New.
112 (variable_def): Drop cur_loc_changed, add onepart.
113 (value_chain_def, const_value_chain): Remove.
114 (VAR_PART_OFFSET, VAR_LOC_1PAUX): New macros, with checking.
115 (VAR_LOC_DEP_LST, VAR_LOC_DEP_LSTP): New macros.
116 (VAR_LOC_FROM, VAR_LOC_DEPTH, VAR_LOC_DEP_VEC): Likewise.
117 (value_chain_pool, value_chains): Remove.
118 (dropped_values): New.
119 (struct parm_reg): Only if HAVE_window_save.
120 (vt_stack_adjustments): Don't record register arguments.
122 (dv_onepart_p): Return a onepart_enum_t.
126 (variable_htab_free): Release onepart aux data. Reset flags.
127 (value_chain_htab_hash, value_chain_htab_eq): Remove.
128 (unshare_variable): Use onepart field. Propagate onepart aux
129 data or offset. Drop cur_loc_changed.
130 (val_store): Cope with NULL insn. Rephrase dump output. Check
131 for unsuitable locs. Add FIXME on using cselib locs.
132 (val_reset): Remove FIXME of unfounded concerns.
133 (val_resolve): Check for unsuitable locs. Add FIXME on using
135 (variable_union): Use onepart field, adjust access to offset.
137 (VALUE_CHANGED, DECL_CHANGED): Update doc.
138 (set_dv_changed): Clear NO_LOC_P when changed.
139 (find_loc_in_1pdv): Use onepart field.
140 (intersect_loc_chains): Likewise.
141 (unsuitable_loc): New.
142 (loc_cmp): Keep ENTRY_VALUEs at the end of the loc list.
143 (add_value_chain, add_value_chains): Remove.
144 (add_cselib_value_chains, remove_value_chain): Likewise.
145 (remove_value_chains, remove_cselib_value_chains): Likewise.
146 (canonicalize_loc_order_check): Use onepart. Drop cur_loc_changed.
147 (canonicalize_values_star, canonicalize_vars_star): Use onepart.
148 (variable_merge_over_cur): Likewise. Adjust access to offset.
149 Drop cur_loc_changed.
150 (variable_merge_over_src): Use onepart field.
151 (remove_duplicate_values): Likewise.
152 (variable_post_merge_new_vals): Likewise.
153 (find_mem_expr_in_1pdv): Likewise.
154 (dataflow_set_preserve_mem_locs): Likewise. Drop cur_loc_changed
156 (dataflow_set_remove_mem_locs): Likewise. Use VAR_LOC_FROM.
157 (variable_different_p): Use onepart field. Move onepart test out
159 (argument_reg_set): Drop.
160 (add_uses, add_stores): Preserve but do not record in dynamic
161 tables equivalences for ENTRY_VALUEs and CFA_based addresses.
162 Avoid unsuitable address expressions.
163 (EXPR_DEPTH): Unlimit.
164 (EXPR_USE_DEPTH): Repurpose PARAM_MAX_VARTRACK_EXPR_DEPTH.
165 (prepare_call_arguments): Use DECL_RTL_IF_SET.
166 (dump_var): Adjust access to offset.
167 (variable_from_dropped, recover_dropped_1paux): New.
168 (variable_was_changed): Drop cur_loc_changed. Use onepart.
169 Preserve onepart aux in empty_var. Recover empty_var and onepart
170 aux from dropped_values.
171 (find_variable_location_part): Special-case onepart. Adjust
173 (set_slot_part): Use onepart. Drop cur_loc_changed. Adjust
174 access to offset. Initialize onepaux. Drop value chains.
175 (delete_slot_part): Drop value chains. Use VAR_LOC_FROM.
176 (VEC (variable, heap), VEC (rtx, stack)): Define.
177 (expand_loc_callback_data): Drop dummy, cur_loc_changed,
178 ignore_cur_loc. Add expanding, pending, depth.
179 (loc_exp_dep_alloc, loc_exp_dep_clear): New.
180 (loc_exp_dep_insert, loc_exp_dep_set): New.
181 (notify_dependents_of_resolved_value): New.
182 (update_depth, vt_expand_var_loc_chain): New.
183 (vt_expand_loc_callback): Revamped.
184 (resolve_expansions_pending_recursion): New.
185 (INIT_ELCD, FINI_ELCD): New.
186 (vt_expand_loc): Use the new macros above. Drop ignore_cur_loc
187 parameter, adjust all callers.
188 (vt_expand_loc_dummy): Drop.
189 (vt_expand_1pvar): New.
190 (emit_note_insn_var_location): Operate on non-debug decls only.
191 Revamp multi-part cur_loc recomputation and one-part expansion.
192 Drop cur_loc_changed. Adjust access to offset.
193 (VEC (variable, heap)): Drop.
194 (changed_variables_stack, changed_values_stack): Drop.
195 (check_changed_vars_0, check_changed_vars_1): Remove.
196 (check_changed_vars_2, check_changed_vars_3): Remove.
197 (values_to_stack, remove_value_from_changed_variables): New.
198 (notify_dependents_of_changed_value, process_changed_values): New.
199 (emit_notes_for_changes): Revamp onepart updates.
200 (emit_notes_for_differences_1): Use onepart. Drop cur_loc_changed
201 and value chains. Propagate onepaux. Recover empty_var and onepaux
203 (emit_notes_for_differences_2): Drop value chains.
204 (emit_notes_in_bb): Adjust.
205 (vt_emit_notes): Drop value chains, changed_variables_stack.
206 Initialize and release dropped_values.
207 (create_entry_value): Revamp.
208 (vt_add_function_parameter): Use new interface.
209 (note_register_arguments): Remove.
210 (vt_initialize): Drop value chains and register arguments.
211 (vt_finalize): Drop value chains. Release windowed_parm_regs only
213 * rtl.h: Document various pass-local uses of RTL flags.
214 * tree.h (DECL_RTL_KNOWN_SET): New.
215 * doc/invoke.texi (param max-vartrack-expr-depth): Update
216 description and default.
218 2011-10-19 Georg-Johann Lay <avr@gjlay.de>
221 * config/avr/avr.md (cc): New alternative out_plus_noclobber.
223 (addhi3): Don't pipe through short; use gen_int_mode instead.
224 Prior to reload, expand to gen_addhi3_clobber.
225 (*addhi3): Use avr_out_plus_noclobber if applicable, use
226 out_plus_noclobber in cc and adjust_len attribute.
227 (addhi3_clobber): 2 new RTL peepholes.
228 (addhi3_clobber): New insn.
229 * config/avr/avr-protos.h: (avr_out_plus_noclobber): New prototype.
230 * config/avr/avr.c (avr_out_plus_noclobber): New function.
231 (notice_update_cc): Handle CC_OUT_PLUS_NOCLOBBER.
232 (avr_out_plus_1): Tweak if only MSB is +/-1 and other bytes are 0.
233 Set cc0 to set_zn for adiw on 16-bit values.
234 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS_NOCLOBBER.
235 (expand_epilogue): No need to add 0 to frame_pointer_rtx.
237 2011-10-19 Richard Guenther <rguenther@suse.de>
240 * tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
241 the condition is properly gimple before using it.
242 * tree-eh (stmt_could_throw_1_p): Properly extract the
243 operation type from comparisons.
245 2011-10-19 Roland Stigge <stigge@antcom.de>
248 * plugin.c (add_new_plugin): Fix typo in fatal_error message.
250 2011-10-19 Roland Stigge <stigge@antcom.de>
253 * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
255 2011-10-19 Richard Guenther <rguenther@suse.de>
258 * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
260 2011-10-19 Andrey Belevantsev <abel@ispras.ru>
262 PR rtl-optimization/50340
263 * sel-sched-ir.c (update_target_availability): LHS register
264 availability is not known if the unavailable LHS of the other
265 expression is a different register.
267 2011-10-19 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
270 * config/spu/spu.c (spu_emit_vector_compare): Support unordered
271 floating-point comparisons.
273 2011-10-19 Jan Hubicka <jh@suse.cz>
275 * cgraphunit.c (handle_alias_pairs): Also handle wekref with destination
277 (output_weakrefs): New function.
278 * varpool.c (varpool_create_variable_alias): Handle external aliases.
280 2011-10-19 Jakub Jelinek <jakub@redhat.com>
282 * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
283 second argument instead of mode.
285 2011-10-18 Jakub Jelinek <jakub@redhat.com>
287 * config/i386/i386.c (ix86_expand_vec_perm): In merge_two use
288 mode SUBREG of operands[0] as target.
289 (valid_perm_using_mode_p): Don't ignore higher bits of d->perm.
290 (expand_vec_pshufb): For V8SImode vmode emit avx2_permvarv8si.
291 (expand_vec_perm_1): Handle identity and some broadcast
293 (expand_vec_perm_interleave2): Handle also 32-byte modes, using
294 vperm2[fi]128 or vpunpck[lh]* followed by single insn permutation.
295 For d->testing_p return true earlier to avoid creating more GC
297 (expand_vec_perm_vpermq_perm_1): New function.
298 (expand_vec_perm_vpshufb2_vpermq): For d->testing_p return true
299 earlier to avoid creating more GC garbage. Fix handling of
300 V16HImode. Avoid some SUBREGs in SET_DEST.
301 (expand_vec_perm_broadcast_1): Return false for 32-byte integer
303 (expand_vec_perm_vpshufb4_vpermq2): New function.
304 (ix86_expand_vec_perm_builtin_1): Call expand_vec_perm_vpermq_perm_1
305 and expand_vec_perm_vpshufb4_vpermq2.
307 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
309 * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
312 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
314 PR tree-optimization/50717
316 * tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
317 parameter. Calculate 'type' from stmt.
318 (convert_mult_to_widen): Update call the is_widening_mult_p.
319 (convert_plusminus_to_widen): Likewise.
321 2011-10-18 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
323 * config/spu/spu.c (struct machine_function): New data structure.
324 (spu_init_machine_status): New function.
325 (spu_option_override): Install it.
326 (get_pic_reg): Set and use cfun->machine->pic_reg.
327 (spu_split_immediate): Do not set crtl->uses_pic_offset_table.
328 (need_to_save_reg): Use cfun->machine->pic_reg instead of
329 checking crtl->uses_pic_offset_table.
330 (spu_expand_prologue): Likewise.
332 2011-10-18 Jakub Jelinek <jakub@redhat.com>
334 PR tree-optimization/50735
335 * function.c (gimplify_parameters): Use create_tmp_var instead of
336 create_tmp_reg. If parm is not TREE_ADDRESSABLE and type is complex
337 or vector type, set DECL_GIMPLE_REG_P.
339 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
341 * config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
342 * config/arm/arm.opt: Add 'native' processor_type and
343 arm_arch enum values.
344 * config/arm/arm.h (host_detect_local_cpu): New prototype.
345 (EXTRA_SPEC_FUNCTIONS): New define.
346 (MCPU_MTUNE_NATIVE_SPECS): New define.
347 (DRIVER_SELF_SPECS): New define.
348 * config/arm/driver-arm.c: New file.
349 * config/arm/x-arm: New file.
350 * doc/invoke.texi (ARM Options): Document -mcpu=native,
351 -mtune=native and -march=native.
353 2011-10-18 Alexander Monakov <amonakov@ispras.ru>
355 PR rtl-optimization/50205
356 * sel-sched.c (count_occurrences_1): Simplify on the assumption that
357 p->x is a register. Forbid substitution when the same register is
358 found in a different mode.
359 (count_occurrences_equiv): Assert that 'what' is a register.
361 2011-10-18 Richard Guenther <rguenther@suse.de>
363 PR tree-optimization/50767
364 * tree-ssa-pre.c (create_expression_by_pieces): Update the
367 2011-10-18 Julian Brown <julian@codesourcery.com>
369 * config/arm/arm.c (arm_block_move_unaligned_straight)
370 (arm_adjust_block_mem, arm_block_move_unaligned_loop)
371 (arm_movmemqi_unaligned): New.
372 (arm_gen_movmemqi): Support unaligned block copies.
374 2011-10-18 Ira Rosen <ira.rosen@linaro.org>
376 * doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
377 vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
378 * tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
379 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
380 (op_code_prio): Likewise.
381 (op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
382 * optabs.c (optab_for_tree_code): Handle
383 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
384 (init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
385 * optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
386 * genopinit.c (optabs): Initialize the new optabs.
387 * expr.c (expand_expr_real_2): Handle
388 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
389 * gimple-pretty-print.c (dump_binary_rhs): Likewise.
390 * tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
391 * tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
392 VEC_WIDEN_LSHIFT_LO_EXPR): New.
393 * cfgexpand.c (expand_debug_expr): Handle new tree codes.
394 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
395 vect_recog_widen_shift_pattern.
396 (vect_handle_widen_mult_by_const): Rename...
397 (vect_handle_widen_op_by_const): ...to this. Handle shifts.
398 Add a new argument, update documentation.
399 (vect_recog_widen_mult_pattern): Assume that only second
400 operand can be constant. Update call to
401 vect_handle_widen_op_by_const.
402 (vect_recog_over_widening_pattern): Fix typo.
403 (vect_recog_widen_shift_pattern): New.
404 * tree-vect-stmts.c (vectorizable_type_promotion): Handle
406 (supportable_widening_operation): Likewise.
407 * tree-inline.c (estimate_operator_cost): Handle new tree codes.
408 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
409 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
410 * config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
411 (vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
412 vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
414 * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
416 * config/arm/iterators.md (V_innermode): New.
417 * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
420 2011-10-18 Richard Guenther <rguenther@suse.de>
422 * tree-ssa-alias.h (struct pt_solution): Remove
423 vars_contains_restrict member.
424 (pt_solutions_same_restrict_base): Remove.
425 (pt_solution_set): Adjust.
426 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Remove
427 vars_contains_restrict handling.
428 (dump_points_to_solution): Likewise.
429 (ptr_derefs_may_alias_p): Do not call pt_solutions_same_restrict_base.
430 * tree-ssa-structalias.c (struct variable_info): Remove is_restrict_var
432 (new_var_info): Do not initialize it.
433 (ipa_escaped_pt): Adjust.
434 (make_constraint_from_restrict): Make the tag global.
435 (make_constraint_from_global_restrict): New function.
436 (make_constraint_from_heapvar): Remove.
437 (create_variable_info_for): Do not make restrict vars point
439 (intra_create_variable_infos): Likewise.
440 (find_what_var_points_to): Remove vars_contains_restrict handling.
441 (pt_solution_set): Adjust.
442 (pt_solution_ior_into): Likewise.
443 (pt_solutions_same_restrict_base): Remove.
444 (compute_points_to_sets): Do not test is_restrict_var.
445 * cfgexpand.c (update_alias_info_with_stack_vars): Adjust.
446 * gimple-pretty-print.c (pp_points_to_solution): Likewise.
448 2011-10-18 Tom de Vries <tom@codesourcery.com>
450 PR tree-optimization/50672
451 * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
453 (mark_virtual_phi_result_for_renaming): Use
454 mark_virtual_operand_for_renaming.
455 * tree-flow.h (mark_virtual_operand_for_renaming): Declare.
456 * tree-ssa-tail-merge.c (release_last_vdef): New function.
457 (purge_bbs): Add update_vops parameter. Call release_last_vdef for each
459 (tail_merge_optimize): Add argument to call to purge_bbs.
461 2011-10-18 Richard Guenther <rguenther@suse.de>
464 * expr.c (get_object_or_type_alignment): New function.
465 (expand_assignment): Use it.
466 (expand_expr_real_1): Likewise.
468 2011-10-18 Dodji Seketeli <dodji@redhat.com>
471 * input.c (dump_line_table_statistics): Use long, not size_t.
473 2011-10-17 Eric Botcazou <ebotcazou@adacore.com>
475 * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
477 2011-10-17 Simon Baldwin <simonb@google.com>
478 Ian Lance Taylor <iant@google.com>
480 * configure.ac: Add --with-native-system-header-dir. Set and
481 substitute NATIVE_SYSTEM_HEADER_DIR. Use native_system_header
482 when setting target_header_dir.
483 * config.gcc: Always set native_system_header_dir.
484 (*-*-gnu*): Set native_system_header_dir. Don't use t-gnu.
485 (i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir. Don't
487 (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
488 native_system_header_dir.
489 (spu-*-elf*): Set native_system_header_dir.
490 * Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
491 @NATIVE_SYSTEM_HEADER_DIR@.
492 (PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
493 * cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
494 (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
495 STANDARD_INCLUDE_COMPONENT.
496 (cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR. Rename
497 STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
498 * system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
499 STANDARD_INCLUDE_COMPONENT.
500 * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
501 * config/i386/t-mingw-w32: Likewise.
502 * config/i386/t-mingw-w64: Likewise.
503 * config/spu/t-spu-elf: Likewise.
504 * config/i386/t-djgpp: Remove.
505 * config/t-gnu: Remove.
506 * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
507 (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
508 STANDARD_INCLUDE_COMPONENT.
509 * config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
510 * config/spu/spu-elf.h: Likewise.
511 * config/vms/xm-vms.h: Likewise.
512 * config/gnu.h: Likewise.
513 * config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
514 and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
515 NATIVE_SYSTME_HEADER_COMPONENT.
516 * doc/install.texi (Configuration): Document
517 --with-native-system-header-dir. Mention it in the documentation
518 for --with-sysroot and --with-build-sysroot.
519 * doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
520 STANDARD_INCLUDE_DIR. Rename STANDARD_INCLUDE_COMPONENT to
521 NATIVE_SYSTEM_HEADER_COMPONENT. Rename uses of
522 STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
523 * doc/fragments.texi (Target Fragment): Don't document
524 NATIVE_SYSTEM_HEADER_DIR.
525 * configure, doc/tm.texi: Rebuild.
527 2011-10-17 Richard Henderson <rth@redhat.com>
529 * config/sparc/sparc.md: Use register_or_zero_operand where rJ
532 * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
534 * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
535 * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
537 2011-10-17 David S. Miller <davem@davemloft.net>
539 * config/sparc/sparc-modes.def: Add single entry vector modes for
541 * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
543 (mov<V32:mode>): Revert back to plain SFmode pattern.
544 (*movsf_insn): Likewise.
545 (mov<V64:mode>): Revert back to plain DFmode pattern.
546 (*movdf_insn_sp32): Likewise.
547 (*movdf_insn_sp32_v9): Likewise.
548 (*movdf_insn_sp64): Likewise.
549 (V64 mode splitters) Likewise.
550 (addsi3): Remove VIS alternatives.
552 (and<V64I:mode>3): Revert to DImode only pattern.
553 (and<V64I:mode>3_sp32): Likewise.
554 (*and<V64I:mode>3_sp64): Likewise.
555 (and<V32I:mode>3): Likewise.
556 (*and_not_<V64I:mode>_sp32): Likewise.
557 (*and_not_<V64I:mode>_sp64): Likewise.
558 (*and_not_<V32I:mode>): Likewise.
559 (ior<V64I:mode>3): Likewise.
560 (*ior<V64I:mode>3_sp32): Likewise.
561 (*ior<V64I:mode>3_sp64): Likewise.
562 (ior<V32I:mode>3): Likewise.
563 (*or_not_<V64I:mode>_sp32): Likewise.
564 (*or_not_<V64I:mode>_sp64): Likewise.
565 (*or_not_<V32I:mode>): Likewise.
566 (xor<V64I:mode>3): Likewise.
567 (*xor<V64I:mode>3_sp32): Likewise.
568 (*xor<V64I:mode>3_sp64): Likewise.
569 (xor<V32I:mode>3): Likewise.
570 (V64I mode splitters): Likewise.
571 (*xor_not_<V64I:mode>_sp32): Likewise.
572 (*xor_not_<V64I:mode>_sp64): Likewise.
573 (*xor_not_<V32I:mode>): Likewise.
574 (one_cmpl<V64I:mode>2): Likewise.
575 (*one_cmpl<V64I:mode>2_sp32): Likewise.
576 (*one_cmpl<V64I:mode>2_sp64): Likewise.
577 (one_cmpl<V32I:mode>2): Likewise.
578 (VM32, VM64, VMALL): New mode iterators.
579 (vbits, vconstr, vfptype): New mode attributes.
580 (mov<VMALL:mode>): New expander.
581 (*mov<VM32:mode>_insn): New insn.
582 (*mov<VM64:mode>_insn_sp64): New insn.
583 (*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
584 specifically for the register to memory case.
585 (vec_init<mode>): New expander.
586 (VADDSUB): New mode iterator.
587 (<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
589 (<plusminus_insn><mode>3): New consolidated pattern.
590 (VL): New mode iterator for logical operations.
591 (vlsuf): New more attribute.
592 (vlop): New code iterator.
593 (vlinsn, vlninsn): New code attributes.
594 (<code><mode>3): New insn to non-negated vector logical ops.
595 (*not_<code><mode>3): Likewise for negated variants.
596 (*nand<mode>_vis): New insn.
597 (vlnotop): New code iterator.
598 (*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
599 (one_cmpl<mode>2): New insn.
600 (faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
601 (bshuffle<VM64:mode>_vis): Likewise.
602 (v<vis3_shift_patname><mode>3): Use GCM mode iterator.
603 (fp<plusminus_insn>64_vis): Use V1DI mode.
604 (VASS mode iterator): Use V1SI not SI mode.
605 * config/sparc/sparc.c (sparc_vis_init_builtins): Account for
606 single-entry vector mode changes.
607 (sparc_expand_builtin): Likewise.
608 (sparc_expand_vector_init): New function.
609 * config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.
611 2011-10-17 Kai Tietz <ktietz@redhat.com>
613 * fold-const.c (simple_operand_p_2): New function.
614 (fold_truthop): Rename to
615 (fold_truth_andor_1): function name.
616 Additionally remove branching creation for logical and/or.
617 (fold_truth_andor): Handle branching creation for logical and/or here.
619 2011-10-17 Andi Kleen <ak@linux.intel.com>
621 * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
623 2011-10-17 Georg-Johann Lay <avr@gjlay.de>
625 * config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
626 * config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
627 (adjust_len): Add alternative "call".
628 (isa, enabled): New insn attributes.
629 (length): Use match_test with AVR_HAVE_JMP_CALL instead of
631 (*sbrx_branch<mode>): Ditto.
632 (*sbrx_and_branch<mode>): Ditto.
633 (*sbix_branch): Ditto.
634 (*sbix_branch_bit7): Ditto.
635 (*sbix_branch_tmp): Ditto.
636 (*sbix_branch_tmp_bit7): Ditto.
638 (negsi2): Use attribute "isa" instead of assembler dialect.
639 (extendhisi2): Ditto.
640 (call_insn, call_value_insn): Set adjust_len attribute.
641 (indirect_jump): Indent to coding rules.
642 (call_prologue_saves): Use isa attribute instead of mcu_mega.
643 (epilogue_restores): Ditto. Fix setting of SP as described in the
645 (*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
646 and *indirect_jump_avr6.
647 (*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
648 (*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
649 (*tablejump_rjmp, *tablejump_lib): Remove.
650 * config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.
652 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
655 * doc/invoke.texi ([Wnonnull]): Update.
657 2011-10-17 Richard Henderson <rth@redhat.com>
660 * optabs.c (expand_vec_perm_expr): Fix indexing error.
662 2011-10-17 Sergio Durigan Junior <sergiodj@redhat.com>
664 * configure.ac: Display `yes' if the SystemTap header has been
666 * configure: Regenerate.
668 2011-10-08 Andi Kleen <ak@linux.intel.com>
671 * config.in, configure: Regenerate.
672 * configure.ac (madvise): Add to AC_CHECK_FUNCS.
673 * ggc-page.c (USING_MADVISE): Add.
674 (page_entry): Add discarded field.
675 (alloc_page): Check for discarded pages.
676 (release_pages): Add USING_MADVISE branch.
678 2011-10-17 Richard Guenther <rguenther@suse.de>
680 PR tree-optimization/50729
681 * tree-vrp.c (extract_range_from_unary_expr_1): Remove
683 (simplify_conversion_using_ranges): Properly test the
686 2011-10-15 Tom Tromey <tromey@redhat.com>
687 Dodji Seketeli <dodji@redhat.com>
689 * ggc.h (ggc_round_alloc_size): Declare new public entry point.
690 * ggc-none.c (ggc_round_alloc_size): New public stub function.
691 * ggc-page.c (ggc_alloced_size_order_for_request): New static
692 function. Factorized from ggc_internal_alloc_stat.
693 (ggc_round_alloc_size): New public function. Uses
694 ggc_alloced_size_order_for_request.
695 (ggc_internal_alloc_stat): Use ggc_alloced_size_order_for_request.
696 * ggc-zone.c (ggc_round_alloc_size): New public function extracted
697 from ggc_internal_alloc_zone_stat.
698 (ggc_internal_alloc_zone_stat): Use ggc_round_alloc_size.
699 * toplev.c (general_init): Initialize
700 line_table->alloced_size_for_request.
702 2011-10-15 Tom Tromey <tromey@redhat.com>
703 Dodji Seketeli <dodji@redhat.com>
705 * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New
707 (num_expanded_macros_counter, num_macro_tokens_counter): Declare
709 (dump_line_table_statistics): Define new function.
710 * input.h (dump_line_table_statistics): Declare new function.
711 * toplev.c (dump_memory_report): Call dump_line_table_statistics.
713 2011-10-15 Tom Tromey <tromey@redhat.com>
714 Dodji Seketeli <dodji@redhat.com>
716 * doc/cppopts.texi: Document -fdebug-cpp.
717 * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor
720 2011-10-15 Tom Tromey <tromey@redhat.com>
721 Dodji Seketeli <dodji@redhat.com>
723 * gcc/diagnostic.h (diagnostic_report_current_module): Add a
725 * diagnostic.c (diagnostic_report_current_module): Add a location
726 parameter to the function definition. Use it instead of
727 input_location. Resolve the virtual location rather than just
728 looking up its map and risking to touch a resulting macro map.
729 (default_diagnostic_starter): Pass the relevant diagnostic
730 location to diagnostic_report_current_module.
731 * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): New.
732 (virt_loc_aware_diagnostic_finalizer): Likewise.
733 (diagnostic_report_current_function): Pass the
734 relevant location to diagnostic_report_current_module.
735 * tree-diagnostic.h (virt_loc_aware_diagnostic_finalizer): Declare
737 * toplev.c (general_init): By default, use the new
738 virt_loc_aware_diagnostic_finalizer as diagnostic finalizer.
739 * Makefile.in: Add vec.h dependency to tree-diagnostic.c.
741 2011-10-15 Tom Tromey <tromey@redhat.com>
742 Dodji Seketeli <dodji@redhat.com>
744 * doc/cppopts.texi (-ftrack-macro-expansion): Document new option.
745 * doc/invoke.texi (-ftrack-macro-expansion): Add this to the list of
746 preprocessor related options.
748 2011-10-15 Tom Tromey <tromey@redhat>
749 Dodji Seketeli <dodji@redhat.com>
751 * input.h (struct expanded_location): Move to libcpp/line-map.h.
752 (LOCATION_COLUMN): New accessor
753 (in_system_header_at): Use linemap_location_in_system_header_p.
754 * diagnostic.c (diagnostic_report_current_module): Adjust to avoid
755 touching the internals of struct line_map. Use the public API.
757 (diagnostic_report_diagnostic): Don't use relational operator '<'
758 on virtual locations. Use linemap_location_before_p instead.
759 * input.c (expand_location): Adjust to expand to the tokens'
760 spelling location when macro location tracking is on.
763 2011-10-08 Andi Kleen <ak@linux.intel.com>
765 * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
767 2011-10-13 Andi Kleen <ak@linux.intel.com>
769 * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
771 2011-10-16 Ira Rosen <ira.rosen@linaro.org>
773 PR tree-optimization/50727
774 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
775 DEF_STMT to the list of statements to be replaced by the
778 2011-10-16 Eric Botcazou <ebotcazou@adacore.com>
780 PR rtl-optimization/50615
781 * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
783 2011-10-16 Jakub Jelinek <jakub@redhat.com>
785 PR tree-optimization/50596
786 * tree-vectorizer.h (NUM_PATTERNS): Increase to 7.
787 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
788 vect_recog_bool_pattern.
789 (check_bool_pattern, adjust_bool_pattern_cast,
790 adjust_bool_pattern, vect_recog_bool_pattern): New functions.
792 2011-10-16 Ira Rosen <ira.rosen@linaro.org>
794 * tree-vect-stmts.c (vectorizable_load): For SLP without permutation
795 treat the first load of the node as the first element in its
797 * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
798 necessary and possible.
799 (vect_build_slp_tree): Add new argument. Allow load groups of any size
800 in basic blocks. Keep all the loads for further permutation check.
801 Use the new argument to determine if there is a permutation. Update
803 (vect_supported_load_permutation_p): Allow subchains of interleaving
804 chains in basic block vectorization.
805 (vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
806 Check load permutation based on the new parameter.
807 (vect_schedule_slp_instance): Don't start from the first element in
808 interleaving chain unless the loads are permuted.
810 2011-10-15 Jan Hubicka <jh@suse.cz>
814 * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
817 2011-10-15 Richard Henderson <rth@redhat.com>
819 * tree-vect-slp.c: Include langhooks.h.
820 (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin.
821 (vect_transform_slp_perm_load): Use can_vec_perm_expr_p. Simplify
822 mask creation for VEC_PERM_EXPR.
823 * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask,
825 (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin.
826 * Makefile.in (tree-vect-slp.o): Update dependency.
827 * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant.
829 2011-10-15 Alan Modra <amodra@gmail.com>
832 * ifcvt.c (dead_or_predicable): Revert accidental commit with
833 HAVE_simple_return test.
835 2011-10-15 Alan Modra <amodra@gmail.com>
837 * ifcvt.c (dead_or_predicable): Disable if-conversion when
838 doing so is likely to kill a shrink-wrapping opportunity.
840 PR rtl-optimization/49941
841 * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
843 * rtl.h (set_return_jump_label): Declare.
844 * function.c (set_return_jump_label): New function, extracted..
845 (thread_prologue_and_epilogue_insns): ..from here. Use it in
846 another instance to set return jump_label.
847 * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
848 * reorg.c (find_end_label): Likewise.
850 2011-10-14 David S. Miller <davem@davemloft.net>
852 * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
853 with a more complete cpp test.
854 * config/sparc/linux64.h: Likewise.
855 * config/sparc/linux.h: Likewise.
856 * config/sparc/sparc.opt (sparc_debug): New target variable.
857 (mdebug): New target option.
858 * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
859 TARGET_DEBUG_OPTIONS): New defines.
860 * config/sparc/sparc.c (debug_target_flag_bits,
861 debug_target_flags): New functions.
862 (sparc_option_override): Add name strings back to cpu_table[].
863 Parse -mdebug string. When TARGET_DEBUG_OPTIONS is true, print
864 out the target flags before and after override processing as well
865 as the selected cpu. If MASK_V8PLUS, make sure that the selected
868 2011-10-15 Oleg Endo <oleg.endo@t-online.de>
871 * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
872 * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
873 * config/sh/sh.md (tstsi_t): Name existing insn. Make inner
874 and instruction commutative.
875 (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
876 tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
877 tstsi_t_zero_extract_subreg_xor_little,
878 tstsi_t_zero_extract_subreg_xor_big): New insns.
879 (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
881 (*andsi_compact): Reorder alternatives so that K08 is considered first.
883 2011-10-14 Eric Botcazou <ebotcazou@adacore.com>
886 * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
887 processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
889 2011-10-14 Gerald Pfeifer <gerald@pfeifer.com>
891 * invoke.texi (AVR Options): Avoid \leq{}.
893 2011-10-14 Kai Tietz <ktietz@redhat.com>
895 * gimplify.c (gimplify_expr): Take care that for bitwise-binary
896 transformation the operands have compatible types.
898 2011-10-14 Jakub Jelinek <jakub@redhat.com>
900 * config/i386/sse.md (vec_widen_smult_hi_v8hi,
901 vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
902 vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
903 mode iterator and any_extend code iterator.
904 (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
905 (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
906 also for TARGET_SSE4_1 using pmuldq insn.
907 (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
908 (sse2_sse4_1): New code attr.
909 (udot_prodv4si): Macroize using any_extend code iterator.
910 (<s>dot_prodv8si): New expander.
912 2011-10-14 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
914 * config/i386/i386.c (atom_cost): Changed cost for loading
917 2011-10-14 Michael Meissner <meissner@linux.vnet.ibm.com>
919 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
920 change on October 11th, 2011.
922 2011-10-14 Jakub Jelinek <jakub@redhat.com>
924 * config/i386/sse.md (vec_interleave_high<mode>,
925 vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
926 * config/i386/i386.c (expand_vec_perm_interleave3): New function.
927 (ix86_expand_vec_perm_builtin_1): Call it.
929 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
931 Fix thinko from r179765
932 * config/avr/avr.c (avr_option_override): Don't override
933 flag_omit_frame_pointer if not actually needed.
935 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
938 * doc/invoke.texi (AVR Options): Document -mstrict-X.
940 * config/avr/avr.opt (-mstrict-X): New option.
941 (avr_strict_X): New variable reflecting -mstrict-X.
942 * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
943 outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
944 (avr_legitimate_address_p): Pass outer_code to
945 avr_reg_ok_for_addr_p and use that function in case PLUS.
946 (avr_mode_code_base_reg_class): Depend on avr_strict_X.
947 (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
948 (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
950 2011-10-14 Jakub Jelinek <jakub@redhat.com>
952 * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
955 * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
956 (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
957 Use <sseinsnmode> instead of TI in mode attr.
959 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
961 * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
962 * config/arm/linux-atomic.c: Change comment to point to 64bit version.
963 (SYNC_LOCK_RELEASE): Instantiate 64bit version.
964 * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
966 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
968 * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
969 (arm_output_strex): Support strexd.
970 (arm_output_it): New helper to output it in Thumb2 mode only.
971 (arm_output_sync_loop): Support DI mode. Change comment to
972 not support const_int.
973 (arm_expand_sync): Support DI mode.
974 * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
976 * config/arm/iterators.md (NARROW): move from sync.md.
977 (QHSD): New iterator for all current ARM integer modes.
978 (SIDI): New iterator for SI and DI modes only.
979 * config/arm/sync.md (sync_predtab): New mode_attr.
980 (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
981 (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
982 (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
983 (sync_nandsi): Fold into sync_nand<mode>.
984 (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
985 (sync_new_nandsi): Fold into sync_new_nand<mode>.
986 (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
987 (sync_old_nandsi): Fold into sync_old_nand<mode>.
988 (sync_compare_and_swap<mode>): Support SI & DI.
989 (sync_lock_test_and_set<mode>): Likewise.
990 (sync_<sync_optab><mode>): Likewise.
991 (sync_nand<mode>): Likewise.
992 (sync_new_<sync_optab><mode>): Likewise.
993 (sync_new_nand<mode>): Likewise.
994 (sync_old_<sync_optab><mode>): Likewise.
995 (sync_old_nand<mode>): Likewise.
996 (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
997 (arm_sync_lock_test_and_setsi): Likewise.
998 (arm_sync_new_<sync_optab>si): Likewise.
999 (arm_sync_new_nandsi): Likewise.
1000 (arm_sync_old_<sync_optab>si): Likewise.
1001 (arm_sync_old_nandsi): Likewise.
1002 (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
1003 (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
1004 (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
1005 (arm_sync_new_nand<mode> NARROW): Likewise.
1006 (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
1007 (arm_sync_old_nand<mode> NARROW): Likewise.
1009 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1012 * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1014 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1016 * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1018 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1020 * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1022 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1024 * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
1025 on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
1027 2011-10-14 Richard Guenther <rguenther@suse.de>
1029 PR tree-optimization/50723
1030 * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1032 2011-10-14 Nicola Pero <nicola.pero@meta-innovation.com>
1034 * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1037 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1040 * doc/invoke.texi ([Wformat-zero-length]): Update.
1042 2011-10-14 Iain Sandoe <iains@gcc.gnu.org>
1045 * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1046 build for powerpc targets. (darwin_patch_builtins): Only build for
1049 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1051 * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
1052 (avx_cvtdq2pd256_2): ... this.
1053 (sseunpackfltmode): New mode attr.
1054 (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
1055 vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
1056 using VI2_AVX2 iterator.
1057 (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
1059 2011-10-13 David S. Miller <davem@davemloft.net>
1061 * config/sparc/sparc.md (plusminus): New code iterator.
1062 (plusminus_insn): New code attr.
1063 (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
1064 using plusminus and plusminus_insn.
1065 (fpadd64_vis, fpsub64_vis): Likewise.
1067 2011-10-13 Richard Henderson <rth@redhat.com>
1069 * doc/md.texi (vec_perm): Document fallback to byte permutation.
1070 * genopinit.c (optabs): Add vec_perm_const.
1071 * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
1072 Reject non-vector modes. Allow fallback to byte permutation.
1073 (expand_vec_perm_expr_1): Split out from ...
1074 (expand_vec_perm_expr): ... here. Allow fallback to byte permutation.
1075 * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
1076 * tree-vect-generic.c (lower_vec_perm): Update for name change.
1078 2011-10-13 Richard Henderson <rth@redhat.com>
1080 * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1082 * config/rs6000/spu.md (vec_permv16qi): New pattern.
1084 * config/i386/i386.c (ix86_expand_vec_perm_const): New.
1085 * config/i386/i386-protos.h: Update.
1086 * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
1087 (vec_perm_const<VEC_PERM_CONST>): New expander.
1089 * optabs.c (expand_vector_broadcast): New.
1090 (expand_binop): Expand scalar shifts of vectors to vector shifts
1091 of vectors, if the former isn't supported.
1092 * tree-vect-generic.c (expand_vector_operations_1): Don't do that
1093 here; always simplify to scalar shift of vector if possible.
1095 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1096 test for vector splat.
1098 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1100 * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1102 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1103 Richard Guenther <rguenther@suse.de>
1105 * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
1106 or complex vars even if their DECL_UID is in not_reg_needs bitmap.
1108 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1110 * config/i386/sse.md (reduc_umin_v8hi): New pattern.
1111 * config/i386/i386.c (ix86_build_const_vector): Handle
1112 also V32QI, V16QI, V16HI and V8HI modes.
1113 (emit_reduc_half): New function.
1114 (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
1115 Use emit_reduc_half helper function.
1117 2011-10-13 Lawrence Crowl <crowl@google.com>
1118 Diego Novillo <dnovillo@google.com>
1120 * lto-streamer-in.c (input_struct_function_base): Factor out of ...
1121 (input_function): ... here.
1122 * lto-streamer-out.c (output_struct_function_base): Factor out of ...
1123 (output_function): ... here.
1125 2011-10-13 Gabriel Charette <gchare@google.com>
1126 Diego Novillo <dnovillo@google.com>
1128 * streamer-hooks.h (struct streamer_hooks): Add hooks
1129 input_location and output_location.
1130 * lto-streamer-in.c (lto_input_location): Use
1131 streamer_hooks.input_location, if set.
1132 * lto-streamer-out.c (lto_output_location): Use
1133 streamer_hooks.output_location, if set.
1135 2011-10-13 Eric Botcazou <ebotcazou@adacore.com>
1137 * doc/invoke.texi (SPARC options): Document -mfix-at697f.
1138 * config/sparc/sparc.opt (mfix-at697f): New option.
1139 * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
1140 (sparc_reorg): New function.
1142 2011-10-13 Richard Guenther <rguenther@suse.de>
1144 PR tree-optimization/50712
1145 * ipa-split.c (split_function): Always re-gimplify parameters
1146 when they are not gimple vals before passing them. Properly
1147 check for type compatibility.
1149 2011-10-13 Tom de Vries <tom@codesourcery.com>
1151 * function.c (gimplify_parameters): Set number of arguments of call to
1152 BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1154 2011-10-13 Tom de Vries <tom@codesourcery.com>
1156 * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
1157 for static const strings.
1158 * varasm.c (build_constant_desc): Generate the memory location of the
1159 constant using gen_const_mem.
1161 2011-10-13 Richard Guenther <rguenther@suse.de>
1163 PR tree-optimization/50698
1164 * tree-data-ref.c (split_constant_offset_1): Also process
1167 2011-10-12 David S. Miller <davem@davemloft.net>
1169 * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1170 (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1172 (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1174 (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
1175 (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
1176 Reimplement as unspecs and remove inaccurate comments.
1177 (vis3_shift_patname): New code attr.
1178 (<vis3_shift_insn><vbits>_vis): Rename to
1179 "v<vis3_shift_patname><mode>3".
1180 (vis3_addsub_ss_patname): New code attr.
1181 (<vis3_addsub_ss_insn><vbits>_vis): Rename to
1182 "<vis3_addsub_ss_patname><mode>3".
1183 * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
1184 accommodate pattern name changes.
1186 * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
1187 to zero when assembler lacks support for such instructions.
1188 * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
1189 and MASK_FMAF in defaults when assembler lacks necessary support.
1191 2011-10-12 Jakub Jelinek <jakub@redhat.com>
1193 * config/i386/sse.md (vec_unpacks_lo_<mode>,
1194 vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
1195 vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
1196 * config/i386/i386.c (ix86_expand_sse_unpack): Handle
1197 V32QImode, V16HImode and V8SImode for TARGET_AVX2.
1199 * config/i386/sse.md (vec_avx2): New mode_attr.
1200 (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
1201 (mul<mode>3): ... this.
1203 * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
1204 * config/i386/i386.c (ix86_expand_vec_perm): Handle
1205 V16QImode and V32QImode for TARGET_AVX2.
1206 (MAX_VECT_LEN): Increase to 32.
1207 (expand_vec_perm_blend): Add support for 32-byte integer
1208 vectors with TARGET_AVX2.
1209 (valid_perm_using_mode_p): New function.
1210 (expand_vec_perm_pshufb): Add support for 32-byte integer
1211 vectors with TARGET_AVX2.
1212 (expand_vec_perm_vpshufb2_vpermq): New function.
1213 (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
1214 (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
1216 (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
1217 and expand_vec_perm_vpshufb2_vpermq_even_odd.
1218 * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
1219 32-byte integer vector modes.
1220 (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
1221 (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
1222 (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
1224 (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
1225 match_dup, instead add 4 new operands and require they have
1226 right cross-lane values.
1227 (avx2_permv4di): Change into define_expand.
1228 (avx2_permv4di_1): New instruction.
1229 (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
1230 for "xm" constrained operand.
1231 (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
1233 * config/i386/sse.md (avx2_gathersi<mode>,
1234 avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
1235 match_scratch, change memory_operand to register_operand,
1236 add (mem:BLK (scratch)) use.
1237 (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
1238 *avx2_gatherdi<mode>256): Add clobber of match_scratch,
1239 add earlyclobber to the output operand and match_scratch,
1240 add (mem:BLK (scratch)) use, change the other mem to match_operand.
1241 Use %p6 instead of %c6 in the pattern.
1242 * config/i386/i386.c (ix86_expand_builtin): Adjust for
1243 operand 2 being a Pmode register_operand instead of memory_operand.
1245 2011-10-12 Kai Tietz <ktietz@redhat.com>
1247 * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1249 2011-10-12 Steve Ellcey <sje@cup.hp.com>
1251 * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1253 2011-10-12 Richard Guenther <rguenther@suse.de>
1255 * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
1256 of the first store we visit in a basic-block.
1257 (get_continuation_for_phi): Search for a candidate VUSE that
1258 might dominates all others. Do pairwise disambiguation against
1261 2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
1263 PR tree-optimization/50189
1264 * tree-vrp.c (extract_range_from_assert): Use the type of
1265 the variable, not the limit.
1267 2011-10-12 Richard Guenther <rguenther@suse.de>
1269 PR tree-optimization/50700
1270 * tree-object-size.c (addr_object_size): Simplify and treat
1271 MEM_REF bases consistently.
1273 2011-10-12 Bernd Schmidt <bernds@codesourcery.com>
1275 * function.c (prepare_shrink_wrap, bb_active_p): New function.
1276 (thread_prologue_and_epilogue_insns): Use bb_active_p.
1277 Call prepare_shrink_wrap, then recompute bb_active_p for the
1280 2011-10-12 Joseph Myers <joseph@codesourcery.com>
1283 * convert.c (convert_to_integer): Do not narrow operands of
1284 pointer subtraction.
1286 2011-10-12 Nick Clifton <nickc@redhat.com>
1288 * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro. Used to
1289 emit a .eabi_attribute assembler directive, possibly with a
1291 * config/arm/arm.c (arm_file_start): Use the new macro.
1292 * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1294 2011-10-12 Georg-Johann Lay <avr@gjlay.de>
1297 * config/avr/avr.md (*movqi): Rename to movqi_insn.
1298 (*call_insn): Rename to call_insn.
1299 (*call_value_insn): Rename to call_value_insn.
1300 * config/avr/avr.c (avr_2word_insn_p): New static function.
1301 (jump_over_one_insn_p): Use it.
1303 2011-10-12 Richard Sandiford <richard.sandiford@linaro.org>
1305 * expr.h (copy_blkmode_to_reg): Declare.
1306 * expr.c (copy_blkmode_to_reg): New function.
1307 (expand_assignment): Don't expand register RESULT_DECLs before
1308 the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
1309 RESULT_DECL register.
1310 (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
1311 * stmt.c (expand_return): Move BLKmode-to-register code into
1312 copy_blkmode_to_reg.
1314 2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
1317 * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
1318 (mov<F:mode>cc): Likewise.
1320 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1322 * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
1324 2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1326 * tree.h (built_in_decls): Delete old interface with two parallel
1327 arrays to hold standard builtin declarations, and replace it with
1328 a function based interface that can support creating builtins on
1329 the fly in the future. Change all uses, and poison the old
1330 names. Make sure 0 is not a legitimate builtin index.
1331 (implicit_built_in_decls): Ditto.
1332 (built_in_info): Ditto.
1333 (BUILTIN_VALID_P): Ditto.
1334 (builtin_decl_explicit): Ditto.
1335 (builtin_decl_implicit): Ditto.
1336 (set_builtin_decl): Ditto.
1337 (set_builtin_decl_implicit_p): Ditto.
1338 (builtin_decl_explicit_p): Ditto.
1339 (builtin_decl_implicit_p): Ditto.
1340 * tree-complex.c (expand_complex_libcall): Ditto.
1341 * tree-loop-distribution.c (generate_memset_zero): Ditto.
1342 * tree-ssa-strlen.c (get_string_length): Ditto.
1343 (handle_builtin_strcpy): Ditto.
1344 (handle_builtin_strcat): Ditto.
1345 * tree.c (iterative_hash_expr): Ditto.
1346 (local_define_builtin): Ditto.
1347 (build_common_builtin_nodes): Ditto.
1348 * builtins.c (built_in_decls): Ditto.
1349 (implicit_built_in_decls): Ditto.
1350 (built_in_info): Ditto
1351 (expand_builtin_classify_type): Ditto.
1352 (mathfn_built_in_1): Ditto.
1353 (expand_builtin_cexpi): Ditto.
1354 (expand_builtin_mempcpy_args): Ditto.
1355 (expand_builtin_stpcpy): Ditto.
1356 (gimplify_va_arg_expr): Ditto.
1357 (expand_builtin_sync_operation): Ditto.
1358 (build_builtin_expect_predicate): Ditto.
1359 (fold_builtin_memory_op): Ditto.
1360 (fold_builtin_strcpy): Ditto.
1361 (fold_builtin_stpcpy): Ditto.
1362 (fold_builtin_strncpy): Ditto.
1363 (fold_builtin_interclass_mathfn): Ditto.
1364 (fold_builtin_classify): Ditto.
1365 (fold_builtin_2): Ditto.
1366 (fold_builtin_strstr): Ditto.
1367 (fold_builtin_strrchr): Ditto.
1368 (fold_builtin_strpbrk): Ditto.
1369 (fold_builtin_strcat): Ditto.
1370 (fold_builtin_strncat): Ditto.
1371 (fold_builtin_strcspn): Ditto.
1372 (fold_builtin_fputs): Ditto.
1373 (fold_builtin_sprintf): Ditto.
1374 (fold_builtin_snprintf): Ditto.
1375 (expand_builtin_memory_chk): Ditto.
1376 (fold_builtin_memory_chk): Ditto.
1377 (fold_builtin_stxcpy_chk): Ditto.
1378 (fold_builtin_strncpy_chk): Ditto.
1379 (fold_builtin_strcat_chk): Ditto.
1380 (fold_builtin_strncat_chk): Ditto.
1381 (fold_builtin_sprintf_chk_1): Ditto.
1382 (fold_builtin_snprintf_chk_1): Ditto.
1383 (fold_builtin_printf): Ditto.
1384 (fold_builtin_fprintf): Ditto.
1385 (fold_call_stmt): Ditto.
1386 (set_builtin_user_assembler_name): Ditto.
1387 * tree-emutls.c (emutls_common_1): Ditto.
1388 * omp-low.c (scan_omp): Ditto.
1389 (lower_rec_input_clauses): Ditto.
1390 (lower_reduction_clauses): Ditto.
1391 (expand_parallel_call): Ditto.
1392 (expand_task_call): Ditto.
1393 (maybe_catch_exception): Ditto.
1394 (optimize_omp_library_calls): Ditto.
1395 (expand_omp_for_generic): Ditto.
1396 (expand_omp_for_static_nochunk): Ditto.
1397 (expand_omp_for_static_chunk): Ditto.
1398 (expand_omp_sections): Ditto.
1399 (expand_omp_atomic_fetch_op): Ditto.
1400 (expand_omp_atomic_pipeline): Ditto.
1401 (expand_omp_atomic_mutex): Ditto.
1402 (lower_omp_single_simple): Ditto.
1403 (lower_omp_single_copy): Ditto.
1404 (lower_omp_master): Ditto.
1405 (lower_omp_ordered): Ditto.
1406 (lower_omp_critical): Ditto.
1407 * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
1408 * builtins.c (DEF_BUILTIN_STUB): Ditto.
1409 (BUILT_IN_NONE): Ditto.
1410 * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
1411 * gimple-low.c (lower_function_body): Ditto.
1412 (lower_builtin_setjmp): Ditto.
1413 * c-decl.c (merge_decls): Ditto.
1414 * tree-eh.c (lower_resx): Ditto.
1415 (lower_resx): Ditto.
1416 (lower_eh_dispatch): Ditto.
1417 * function (gimplify_parameters): Ditto.
1418 * c-typeck.c (build_function_call_vec): Ditto.
1419 * gimplify.c (build_stack_save_restore): Ditto.
1420 (gimplify_vla_decl): Ditto.
1421 (gimplify_modify_expr_to_memcpy): Ditto.
1422 (gimplify_modify_expr_to_memset): Ditto.
1423 (gimplify_variable_sized_compare): Ditto.
1424 (gimplify_function_tree): Ditto.
1425 * calls.c (emit_call_1): Ditto.
1426 * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
1427 * tree-nested.c (convert_nl_goto_reference): Ditto.
1428 (convert_tramp_reference_op): Ditto.
1429 (finalize_nesting_tree_1): Ditto.
1430 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
1431 (tree_ssa_prefetch_arrays): Ditto.
1432 * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
1433 * system.h (built_in_decls): Ditto.
1434 (implicit_built_in_decls): Ditto.
1435 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1436 * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
1437 * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
1438 (ix86_veclibabi_svml): Ditto.
1439 (ix86_veclibabi_acml): Ditto.
1440 * config/vms/vms.c (vms_patch_builtins): Ditto.
1441 * config/ia64/ia64.c (ia64_init_builtins): Ditto.
1442 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
1443 (rs6000_builtin_vectorized_libmass): Ditto.
1444 (rs6000_init_builtins): Ditto.
1445 * config/darwin.c (darwin_override_options): Ditto.
1446 (darwin_patch_builtin): Ditto.
1447 (darwin_rename_builtins): Ditto.
1448 * config/pa/pa.c (pa_init_builtins): Ditto.
1450 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1452 * tree.h (copy_ref_info): Expose existing function.
1453 * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
1454 * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
1456 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
1458 * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
1460 (avr_regno_mode_code_ok_for_base_p): New prototype.
1461 * config/avr/avr.h (BASE_REG_CLASS): Remove.
1462 (REGNO_OK_FOR_BASE_P): Remove.
1463 (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
1464 (REG_OK_FOR_BASE_STRICT_P): Remove.
1465 (MODE_CODE_BASE_REG_CLASS): New define.
1466 (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
1467 * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
1468 (avr_regno_mode_code_ok_for_base_p): New function.
1469 (avr_reg_ok_for_addr_p): New static function.
1470 (avr_legitimate_address_p): Use it. Beautify.
1472 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
1475 * config/avr/avr.md (cc): Add out_plus attribute alternative.
1476 (addsi3): Use it. Adapt avr_out_plus to new prototype. Use
1477 avr_out_plus for all CONST_INT addends.
1478 * config/avr/avr-protos.h (avr_out_plus): Change prototype.
1479 * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
1481 (avr_out_plus_1): Change prototype and report effect on cc0.
1482 (avr_out_plus): Ditto.
1483 (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
1485 2011-10-11 H.J. Lu <hongjiu.lu@intel.com>
1487 * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
1490 2011-10-11 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
1492 * doc/invoke.texi: Document new warning.
1493 * common.opt (Wvector-operation-performance): Define new warning.
1494 * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
1496 (exapnd_vector_parallel): Warn about expanded vector operation.
1497 (lower_vec_shuffle): Warn about expanded vector operation.
1498 * c-typeck.c (c_build_vec_perm_expr): Store correct location
1499 when creating VEC_PERM_EXPR.
1501 2011-10-11 Richard Guenther <rguenther@suse.de>
1503 PR tree-optimization/50204
1504 * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
1505 two argument handling from ...
1506 (get_continuation_for_phi): ... here. Handle arbitrary number
1509 2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
1511 * modulo-sched.c: Fix comment typo. Mention the possibility
1512 of using scheduling windows of II+1 cycles.
1514 2011-10-11 Tristan Gingold <gingold@adacore.com>
1516 * doc/invoke.texi (C Dialect Options): Document
1517 -fallow-parameterless-variadic-functions.
1518 * c-parser.c (c_parser_parms_list_declarator): Handle it.
1520 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1522 * config/avr/avr.c (avr_option_override): Set
1523 flag_omit_frame_pointer to 0 if frame pointer is needed for unwinding.
1525 2011-10-10 Uros Bizjak <ubizjak@gmail.com>
1528 * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm. Move from enum
1529 optab_index to enum direct_optab_index.
1530 (vec_perm_optab): Update.
1532 2011-10-10 Anatoly Sokolov <aesok@post.ru>
1534 * config/cris/cris.c (cris_preferred_reload_class): New function.
1535 (TARGET_PREFERRED_RELOAD_CLASS): Define.
1536 * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
1538 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1540 * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
1542 (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
1543 (*tablejump_enh, *tablejump): Remove insns.
1544 * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
1545 EIJMP for indirect jump. Use LPM Z+ where available.
1547 2011-10-10 Richard Henderson <rth@redhat.com>
1549 * doc/md.texi (vec_perm_const): Fix typo in cindex.
1551 2011-10-10 Kirill Yukhin <kirill.yukhin@intel.com>
1552 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
1554 * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
1556 2011-10-10 Richard Guenther <rguenther@suse.de>
1559 * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
1560 mark symbols for renaming. Append the VUSE to all statements
1561 that possibly can have one.
1563 2011-10-10 Richard Guenther <rguenther@suse.de>
1565 * ipa-split.c (pass_split_functions): Add verification TODOs.
1566 (pass_feedback_split_functions): Likewise.
1568 2011-10-10 Richard Guenther <rguenther@suse.de>
1571 * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
1572 only when optimizing.
1574 2011-10-10 Nick Clifton <nickc@redhat.com>
1577 * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
1578 df_get_live_out instead of accessing the bitmaps directly.
1579 (execute_compare_elim_after_reload): Remove calls to df_set_flags,
1580 df_live_add_problem and df_analyze.
1582 2011-10-10 Michael Matz <matz@suse.de>
1585 * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
1587 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1589 * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
1590 (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
1591 (node_sched_params): Remove first_reg_move and nreg_moves.
1592 (ps_num_consecutive_stages, extend_node_sched_params): New functions.
1593 (update_node_sched_params): Move up file.
1594 (print_node_sched_params): Print the stage. Don't dump info related
1595 to first_reg_move and nreg_moves.
1596 (set_columns_for_row): New function.
1597 (set_columns_for_ps): Move up file and use set_columns_for_row.
1598 (schedule_reg_move): New function.
1599 (schedule_reg_moves): Call extend_node_sched_params and
1600 schedule_reg_move. Extend size of uses bitmap. Initialize
1601 num_consecutive_stages. Return false if a move could not be
1603 (apply_reg_moves): Don't emit moves here.
1604 (permute_partial_schedule): Handle register moves.
1605 (duplicate_insns_of_cycles): Remove for_prolog. Emit moves according
1606 to the same stage-count test as ddg nodes.
1607 (generate_prolog_epilog): Update calls accordingly.
1608 (sms_schedule): Allow move-scheduling to add a new first stage.
1610 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1612 * modulo-sched.c (ps_insn): Adjust comment.
1613 (ps_reg_move_info): New structure.
1614 (partial_schedule): Add reg_moves field.
1615 (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
1616 (node_sched_params): Turn first_reg_move into an identifier.
1617 (ps_reg_move): New function.
1618 (ps_rtl_insn): Cope with register moves.
1619 (ps_first_note): Adjust comment and assert that the instruction
1620 isn't a register move.
1621 (node_sched_params): Replace with...
1622 (node_sched_param_vec): ...this vector.
1623 (set_node_sched_params): Adjust accordingly.
1624 (print_node_sched_params): Take a partial schedule instead of a ddg.
1625 Use ps_rtl_insn and ps_reg_move.
1626 (generate_reg_moves): Rename to...
1627 (schedule_reg_moves): ...this. Remove rescan parameter. Record each
1628 move in the partial schedule, but don't emit it here. Don't perform
1629 register substitutions here either.
1630 (apply_reg_moves): New function.
1631 (duplicate_insns_of_cycles): Use register indices directly,
1632 rather than finding instructions using PREV_INSN. Use ps_reg_move.
1633 (sms_schedule): Call schedule_reg_moves before committing to
1634 a partial schedule. Try the next ii if the schedule fails.
1635 Use apply_reg_moves instead of generate_reg_moves. Adjust
1636 call to print_node_sched_params. Free node_sched_param_vec
1637 instead of node_sched_params.
1638 (create_partial_schedule): Initialize reg_moves.
1639 (free_partial_schedule): Free reg_moves.
1641 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1643 * modulo-sched.c (ps_insn): Replace node field with an identifier.
1644 (SCHED_ASAP): Replace with..
1645 (NODE_ASAP): ...this macro.
1646 (SCHED_PARAMS): New macro.
1647 (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
1648 (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
1649 (node_sched_params): Remove asap.
1650 (ps_rtl_insn, ps_first_note): New functions.
1651 (set_node_sched_params): Use XCNEWVEC. Don't copy across the
1653 (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
1654 (generate_reg_moves): Pass ids to the SCHED_* macros.
1655 (update_node_sched_params): Take a ps insn identifier rather than
1656 a node as parameter. Use ps_rtl_insn.
1657 (set_columns_for_ps): Update for above field and SCHED_* macro changes.
1658 (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
1659 (optimize_sc): Update for above field and SCHED_* macro changes.
1660 Update calls to try_scheduling_node_in_cycle and
1661 update_node_sched_params.
1662 (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
1663 macro changes. Use ps_rtl_insn and ps_first_note.
1664 (sms_schedule): Pass ids to the SCHED_* macros.
1665 (get_sched_window): Adjust for above field and SCHED_* macro changes.
1666 Use NODE_ASAP instead of SCHED_ASAP.
1667 (try_scheduling_node_in_cycle): Remove node parameter. Update
1668 call to ps_add_node_check_conflicts. Pass ids to the SCHED_* macros.
1669 (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
1670 (ps_insert_empty_row): Adjust for above field changes.
1671 (compute_split_row): Use ids rather than nodes.
1672 (verify_partial_schedule): Adjust for above field changes.
1673 (print_partial_schedule): Use ps_rtl_insn.
1674 (create_ps_insn): Take an id rather than a node.
1675 (ps_insn_find_column): Adjust for above field changes.
1677 (ps_insn_advance_column): Adjust for above field changes.
1678 (add_node_to_ps): Remove node parameter. Update call to
1680 (ps_has_conflicts): Use ps_rtl_insn.
1681 (ps_add_node_check_conflicts): Replace node parameter than an id.
1683 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
1685 * modulo-sched.c (undo_replace_buff_elem): Delete.
1686 (generate_reg_moves): Don't build and return an undo list.
1687 (free_undo_replace_buff): Delete.
1688 (sms_schedule): Adjust call to generate_reg_moves.
1689 Don't call free_undo_replace_buff.
1691 2011-10-10 Matthias Klose <doko@ubuntu.com>
1693 * common/config/m32c: Remove empty directory.
1695 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1697 * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
1699 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
1702 * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
1703 atmega164a to 0x100.
1705 2011-10-09 Eric Botcazou <ebotcazou@adacore.com>
1707 * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
1708 the replacement if the conversion to the LHS type is not useless.
1710 2011-10-09 Ira Rosen <ira.rosen@linaro.org>
1712 PR tree-optimization/50635
1713 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
1714 DEF_STMT to the list of statements to be replaced by the
1716 (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
1718 2011-10-09 Anatoly Sokolov <aesok@post.ru>
1720 * system.h: Commit forgotten hunk in previous patch.
1721 (OUTPUT_ADDR_CONST_EXTRA): Poison.
1723 2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
1726 * doc/objc.texi (Garbage Collection): Updated example to protect
1727 +initialize against execution in subclasses.
1729 2011-10-07 Richard Henderson <rth@redhat.com>
1731 * doc/extend.texi (__builtin_shuffle): Improve the description to
1732 include the modulus of the selector. Mention OpenCL.
1733 * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
1735 * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
1736 * genopinit.c (optabs): Rename vshuffle to vec_perm.
1737 * c-typeck.c (c_build_vec_perm_expr): Rename from
1738 c_build_vec_shuffle_expr. Update for name changes.
1739 * optabs.c (expand_vec_perm_expr_p): Rename from
1740 expand_vec_shuffle_expr_p.
1741 (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
1742 * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
1743 (vec_perm_optab): Rename from vshuffle_optab.
1744 * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
1745 c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
1746 tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
1748 * config/i386/i386.c (ix86_expand_vec_perm): Rename from
1749 ix86_expand_vshuffle.
1750 * config/i386/i386-protos.h: Update.
1751 * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
1752 (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
1754 2011-10-07 Richard Henderson <rth@redhat.com>
1756 * config/i386/predicates.md (avx2_pblendw_operand): New.
1757 * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
1758 (avx2_pblendw, *avx2_pblendw): New expander and insn.
1760 2011-10-07 Richard Henderson <rth@redhat.com>
1762 * config/i386/i386.c (bdesc_args): Update code for
1763 __builtin_ia32_palignr256. Change type of __builtin_ia32_pslldqi256,
1764 and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
1765 (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
1766 * config/i386/sse.md (mode iterator V16): Add V2TI.
1767 (mode iterator SSESCALARMODE): Use V2TI not V4DI.
1768 (mode attr ssse3_avx2): Add V2TI.
1769 (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
1771 2011-10-07 David S. Miller <davem@davemloft.net>
1774 * configure.ac: Add .register directives to VIS3 test.
1775 * configure: Regenerate.
1777 2011-10-07 Richard Henderson <rth@redhat.com>
1779 * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
1781 2011-10-07 Richard Henderson <rth@redhat.com>
1784 * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
1786 2011-10-07 Andrew Stubbs <ams@codesourcery.com>
1788 * config/arm/predicates.md (shift_amount_operand): Remove constant
1790 (shift_operator): Check range of constants for all shift operators.
1792 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1794 * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
1795 Load GOT pointer for non-pic builds.
1796 (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
1797 (s390_emit_call): Likewise.
1799 2011-10-07 Tom de Vries <tom@codesourcery.com>
1802 * tree.c (build_common_builtin_nodes): Add local_define_builtin for
1803 BUILT_IN_ALLOCA_WITH_ALIGN. Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
1805 * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
1806 arglist. Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
1807 (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1808 (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1809 * tree-ssa-ccp.c (evaluate_stmt): Set align for
1810 BUILT_IN_ALLOCA_WITH_ALIGN.
1811 (fold_builtin_alloca_for_var): Rename to ...
1812 (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
1813 BUILT_IN_ALLOCA_WITH_ALIGN argument.
1814 (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
1815 fold_builtin_alloca_with_align.
1816 (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1817 * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
1819 * ipa-pure-const.c (special_builtin_state): Handle
1820 BUILT_IN_ALLOCA_WITH_ALIGN.
1821 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
1822 (call_may_clobber_ref_p_1): Same.
1823 * function.c (gimplify_parameters): Lower vla to
1824 BUILT_IN_ALLOCA_WITH_ALIGN.
1825 * gimplify.c (gimplify_vla_decl): Same.
1826 * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1827 * tree-mudflap.c (mf_xform_statements): Same.
1828 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
1829 (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
1830 * varasm.c (incorporeal_function_p): Same.
1831 * tree-object-size.c (alloc_object_size): Same.
1832 * gimple.c (gimple_build_call_from_tree): Same.
1834 2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
1836 * function.c (frame_required_for_rtx): Remove function.
1837 (requires_stack_frame_p): New arg set_up_by_prologue. All callers
1838 changed. Compute a set of mentioned registers and compare against
1839 the new arg rather than calling frame_required_for_rtx.
1840 (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
1841 reg set. Convert the unconverted_simple_returns mechanism to store
1842 jump insns rather than their basic blocks. Also check the
1843 orig_entry_edge destination for new blocks.
1845 2011-10-07 Jakub Jelinek <jakub@redhat.com>
1847 PR tree-optimization/50650
1848 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
1849 call vect_is_simple_cond here, instead fail if cond_expr isn't
1850 COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
1851 for cond_expr's first operand.
1852 * tree-vect-stmts.c (vect_is_simple_cond): Static again.
1853 * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
1855 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1857 * config/s390/s390.md (DWH, dwh): New mode macros.
1858 ("umulsidi3"): Extend to support "umulditi3" as well.
1860 2011-10-07 Uros Bizjak <ubizjak@gmail.com>
1861 H.J. Lu <hongjiu.lu@intel.com>
1864 * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
1865 integer PLUS RTX to a register to improve address combine.
1867 2011-10-06 Richard Henderson <rth@redhat.com>
1869 * combine-stack-adjust.c (maybe_move_args_size_note): Add after
1870 parameter; use it to decide whether to merge two notes.
1871 (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
1872 for the deallocation case as well.
1874 2011-10-06 Anatoly Sokolov <aesok@post.ru>
1876 * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
1877 * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
1878 * doc/tm.texi: Regenerate.
1879 * target.def (output_addr_const_extra): Use
1880 hook_bool_FILEptr_rtx_false.
1881 * targhooks.c (default_asm_output_addr_const_extra): Remove.
1882 * targhooks.h (default_asm_output_addr_const_extra): Remove.
1883 * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
1884 * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
1886 2011-10-06 David S. Miller <davem@davemloft.net>
1888 * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
1889 (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
1890 SI mode 64-bit code gen case explicitly zero-extend and truncate.
1891 (*popcount<mode>_sp64): Split up into...
1892 (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
1893 SImode case use truncate.
1894 (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
1895 subtract so the compiler can optimize it.
1896 (SIDI): Remove unused mode iterator.
1898 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
1900 * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
1901 on the orig_entry_edge. Don't account for it in prologue_clobbered.
1903 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1905 PR tree-optimization/50596
1906 * tree-vectorizer.h (vect_is_simple_cond): New prototype.
1907 (NUM_PATTERNS): Change to 6.
1908 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
1910 (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
1911 (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
1912 if it already has one, and don't set STMT_VINFO_VECTYPE in it
1913 if it is already set.
1914 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
1915 COND_EXPR in pattern stmts.
1916 (vect_is_simple_cond): No longer static.
1918 2001-10-06 Richard Henderson <rth@redhat.com>
1920 * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
1921 * config/i386/sse.md (sseshuffint): Remove.
1922 (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
1923 (VSHUFFLE_AVX2): New mode iterator.
1924 (vshuffle<mode>): Use it.
1925 (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
1927 * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
1928 for vector_all_ones_operand.
1929 (ix86_expand_int_vcond): Distinguish between comparison mode
1930 and data mode. Allow them to differ.
1931 (ix86_expand_vshuffle): Don't force data mode to match maskmode.
1933 2001-10-06 Richard Henderson <rth@redhat.com>
1935 * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
1936 mask operand. Tidy the code.
1938 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1940 * tree-vect-patterns.c (vect_pattern_recog_1): Use
1941 vect_recog_func_ptr typedef for the first argument.
1942 (vect_pattern_recog): Rename vect_recog_func_ptr variable
1943 to vect_recog_func, use vect_recog_func_ptr typedef for it.
1945 PR tree-optimization/49279
1946 * tree-ssa-structalias.c (find_func_aliases): Don't handle
1948 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
1949 restrict propagation.
1950 * tree-ssa.c (useless_type_conversion_p): Don't return false
1951 if TYPE_RESTRICT differs.
1953 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
1955 * function.c (thread_prologue_and_epilogue_insns): Build a vector
1956 of unconverted simple return blocks rather than trying to
1957 recompute them later based on bb_flags bitmap tests.
1959 2011-10-06 Michael Matz <matz@suse.de>
1961 * tree-flow.h (get_var_ann): Don't declare.
1962 * tree-flow-inline.h (get_var_ann): Remove.
1963 (set_is_used): Use var_ann, not get_var_ann.
1964 * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
1965 * tree-profile.c (gimple_gen_edge_profiler): Call
1966 find_referenced_var_in.
1967 (gimple_gen_interval_profiler): Ditto.
1968 (gimple_gen_pow2_profiler): Ditto.
1969 (gimple_gen_one_value_profiler): Ditto.
1970 (gimple_gen_average_profiler): Ditto.
1971 (gimple_gen_ior_profiler): Ditto.
1972 (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
1973 (gimple_gen_ic_func_profiler): Call add_referenced_var.
1974 * tree-mudflap.c (execute_mudflap_function_ops): Call
1977 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1979 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
1980 don't set SSA_NAME_DEF_STMT that has been already set by
1981 gimple_build_assign_with_ops.
1982 (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
1983 vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
1986 * tree.h (avoid_folding_inline_builtin): New prototype.
1987 * builtins.c (avoid_folding_inline_builtin): No longer static.
1988 * gimple-fold.c (gimple_fold_builtin): Give up if
1989 avoid_folding_inline_builtin returns true.
1991 2011-10-06 Richard Guenther <rguenther@suse.de>
1993 * tree-vect-generic.c (vector_element): Look at previous
1996 2011-10-06 David Edelsohn <dje.gcc@gmail.com>
1999 * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2000 __powerpc__, __PPC__, __unix__.
2002 2011-10-06 Michael Matz <matz@suse.de>
2004 * i386/i386.opt (recip_mask, recip_mask_explicit,
2005 x_recip_mask_explicit): New variables and cl_target member.
2006 (mrecip=): New option.
2007 * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
2008 RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
2009 (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
2010 TARGET_RECIP_VEC_SQRT): New tests.
2011 * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
2012 (sqrt<mode>2): Check TARGET_RECIP_SQRT.
2013 * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
2014 (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
2015 * i386/i386.c (ix86_option_override_internal): Set recip_mask
2016 for -mrecip and -mrecip=options.
2017 (ix86_function_specific_save): Save recip_mask_explicit.
2018 (ix86_function_specific_restore): Restore recip_mask_explicit.
2020 * doc/invoke.texi (ix86 Options): Document the new option.
2022 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2025 * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2027 2011-10-06 Ulrich Weigand <ulrich.weigand@linaro.org>
2030 * config/arm/arm.c (arm_legitimize_reload_address): Recognize
2031 output of a previous pass through legitimize_reload_address.
2032 Do not attempt to optimize addresses if the base register is
2033 equivalent to a constant.
2035 2011-10-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2037 * function.c (thread_prologue_and_epilogue_insns): Mark
2038 last_bb_active as possibly unused. It is unused for targets which
2039 do neither have "return" nor "simple_return" expanders.
2041 2011-10-06 Richard Guenther <rguenther@suse.de>
2043 * fold-const.c (fold_ternary_loc): Also fold non-constant
2044 vector CONSTRUCTORs. Make more efficient.
2045 * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
2046 (cprop_into_stmt): Don't propagate into virtual operands.
2047 (optimize_stmt): Really dump original statement.
2049 2011-10-06 Nick Clifton <nickc@redhat.com>
2051 * config/rx/rx.md (smin3): Revert previous delta.
2053 2011-10-06 Richard Guenther <rguenther@suse.de>
2055 PR tree-optimization/38884
2056 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2057 reads from aggregate SSA names.
2059 2011-10-05 Jakub Jelinek <jakub@redhat.com>
2061 * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
2062 argument, truncate it at the beginning instead of allocating there
2063 and freeing at the end.
2064 (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
2065 pass its address to vect_pattern_recog_1.
2067 2011-10-05 David S. Miller <davem@davemloft.net>
2069 * config/sparc/sparc.opt (POPC): New option.
2070 * doc/invoke.texi: Document it.
2071 * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
2072 default on Niagara-2 and later.
2073 * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2074 * config/sparc/sparc.md (SIDI): New mode iterator.
2075 (ffsdi2): Delete commented out pattern and comments.
2076 (popcount<mode>2, clz<mode>2): New expanders.
2077 (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
2078 *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
2080 2011-10-06 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2083 * c-tree.h (c_expr_t): New typedef for struct c_expr.
2084 (C_EXPR_APPEND): New macro.
2085 * c-parser.c (c_parser_get_builtin_args): Preserve
2086 original_tree_code of c_expr structure.
2087 (c_parser_postfix_expression): Adjust to the new function.
2089 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2091 * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2092 if profiling after the prologue.
2094 2011-10-05 Jakub Jelinek <jakub@redhat.com>
2096 PR tree-optimization/50613
2097 * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
2098 operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
2099 and if it is neither that not SSA_NAME, give up.
2101 2011-10-05 Richard Henderson <rth@redhat.com>
2103 * tree-vect-generic.c (vector_element): Never fail. Use
2104 build_zero_cst. Tidy up type references.
2105 (lower_vec_shuffle): Never fail. Mask shuffle indicies. Reduce
2106 code duplication. Do update_stmt here ...
2107 (expand_vector_operations_1): ... not here.
2109 * config/i386/i386.c (ix86_expand_vshuffle): Never fail. Handle
2110 TARGET_XOP. Fix pshufb constant vector creation. Reduce code
2111 duplication. Handle V2DI without SSE4.1.
2112 * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
2113 * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
2115 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
2117 * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2118 of "found". Simplify return value calculation.
2119 (distance_agu_use): Ditto.
2121 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2124 * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
2125 if the function was not shrink-wrapped.
2126 (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
2128 * function.c (thread_prologue_and_epilogue_insns): Make sure the
2129 shrink_wrapped flag is set even if there is no dump file.
2131 2011-10-05 DJ Delorie <dj@redhat.com>
2132 Nick Clifton <nickc@redhat.com>
2134 * config/rx/rx.opt (mpid): Define.
2135 * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
2136 (MULTILIB_DIRNAMES): Add pid.
2137 * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
2138 (rx_num_interrupt_regs): New variable.
2139 (rx_gp_base_regnum): New function. Returns the number of the
2140 small data area register.
2141 (rx_pid_base_regnum): New function. Returns the number of the pid
2143 (rx_decl_for_addr): New function. Returns the symbolic part of a MEM.
2144 (rx_pid_data_operand): New function. Returns whether an object is
2145 in the position independent data area.
2146 (rx_legitimize_address): New function. Puts undecided PID
2147 objects in the PID data area.
2148 (rx_is_legitimate_address): Add support for PID operands.
2149 (rx_print_operand_address): Likewise.
2150 (rx_print_operand): Likewise.
2151 (rx_maybe_pidify_operand): New function. Determine if an operand
2152 is suitable for PID addressing.
2153 (rx_gen_move_template): Add PID support.
2154 (rx_conditional_register_usage): Likewise.
2155 (rx_option_override): Initialise rx_num_interrupt_regs.
2156 (rx_is_legitimate_constant): Add support for PID constants.
2157 (TARGET_LEGITIMIZE_ADDRESS): Define.
2158 * config/rx/constraints.md (Rpid): Define.
2160 * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2161 (tablejump): Add PID support.
2163 (mov<>_internal): Likewise.
2164 (addsi3): Convert to an expander. Add PID support.
2165 (pid_addr): New pattern.
2166 * config/rx/rx.h (CPP_SPEC): Define.
2167 (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
2168 (CASE_VECTOR_PC_RELATIVE): Define.
2169 (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
2170 * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
2171 * doc/invoke.texi (RX Options): Document -mpid command line option.
2173 2011-10-05 Richard Guenther <rguenther@suse.de>
2175 PR tree-optimization/38885
2176 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2179 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2181 * doc/invoke.texi (-fshrink-wrap): Document.
2182 * opts.c (default_options_table): Add it.
2183 * common.opt (fshrink-wrap): Add.
2184 * function.c (emit_return_into_block): Remove useless declaration.
2185 (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
2186 requires_stack_frame_p, gen_return_pattern): New static functions.
2187 (emit_return_into_block): New arg simple_p. All callers changed.
2188 Use gen_return_pattern.
2189 (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
2190 * config/i386/i386.md (return): Expand into a simple_return.
2191 (simple_return): New expander):
2192 (simple_return_internal, simple_return_internal_long,
2193 simple_return_pop_internal_long, simple_return_indirect_internal):
2194 Renamed from return_internal, return_internal_long,
2195 return_pop_internal_long and return_indirect_internal; changed to use
2197 * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2199 (ix86_pad_returns): Likewise.
2200 * function.h (struct rtl_data): Add member shrink_wrapped.
2201 * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
2202 are not jumps or sibcalls can't be compared.
2204 2011-10-05 Richard Guenther <rguenther@suse.de>
2206 * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2208 (simplify_unary_expression): Handle BIT_FIELD_REFs.
2209 (try_to_simplify): Handle BIT_FIELD_REFs.
2211 2011-10-05 Georg-Johann Lay <avr@gjlay.de>
2213 * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
2214 * config/avr/avr.c (avr_out_addto_sp): New function.
2215 (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
2216 * config/avr/avr.md (adjust_len): Add "addto_sp".
2217 (*movhi_sp): Remove insn.
2218 (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
2220 2011-10-05 Richard Guenther <rguenther@suse.de>
2222 * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
2223 with an embedded expression valueize and fold that as well.
2224 * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
2225 results from gimple_fold_stmt_to_constant_1.
2227 2011-10-05 Nick Clifton <nickc@redhat.com>
2229 * config/rx/rx.md (tablejump): Add missing label.
2230 (adddi3_internal): Mark operand 0 as early-clobbered.
2231 (smaxsi3): Revert previous delta.
2232 (adc_internal): Fix whitespace in generated asm.
2233 (adc_flags): Likewise.
2235 2011-10-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2237 * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2238 with the new widening_optab_handler.
2240 2011-10-05 Richard Guenther <rguenther@suse.de>
2242 PR tree-optimization/50609
2243 * gimple-fold.c (fold_array_ctor_reference): Also handle
2244 vector typed constructors.
2245 (fold_ctor_reference): Dispatch to fold_array_ctor_reference
2246 for vector typed constructors.
2248 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
2250 * config/i386/i386.c (ix86_emit_binop): New static function.
2251 (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
2253 (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2255 2011-10-04 David S. Miller <davem@davemloft.net>
2257 * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
2258 UNSPEC_XMUL): New unspecs.
2259 (muldi3_v8plus): Use output_v8plus_mult.
2260 (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
2261 New VIS 3.0 combiner patterns.
2262 (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
2263 fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
2264 umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
2265 xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
2267 * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
2268 (output_v8plus_mult): New function.
2269 * config/sparc/sparc-protos.h: Declare it.
2270 * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
2271 __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
2272 __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
2273 * doc/extend.texi: Document new builtins.
2275 2011-10-04 Richard Henderson <rth@redhat.com>
2277 * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2278 Avoid save_expr unless two_arguments.
2280 2011-10-04 Ozkan Sezer <sezeroz@gmail.com>
2282 * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2283 * config/i386/mingw32.h (CPP_SPEC): Likewise.
2285 2011-10-04 David S. Miller <davem@davemloft.net>
2287 * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2290 2011-10-04 Jakub Jelinek <jakub@redhat.com>
2292 PR tree-optimization/50604
2293 * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
2294 fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
2295 last argument to memcpy has size_type_node type instead of ssizetype.
2296 * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
2297 instead of TREE_TYPE (len) as type for newlen.
2299 PR tree-optimization/50522
2300 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2302 (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
2305 * fold-const.c (fold_unary_loc): Don't optimize
2306 POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
2307 casting the inner pointer if it isn't TYPE_RESTRICT.
2308 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
2309 casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
2311 2011-10-04 Joseph Myers <joseph@codesourcery.com>
2313 * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
2315 2011-10-04 Jan Hubicka <jh@suse.cz>
2317 * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
2318 * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
2319 * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
2320 * lto-cgraph.c (order_base): New static var.
2321 (lto_output_node): Stream in order.
2322 (lto_output_varpool_node): Stream out order.
2323 (input_node): Stream in order.
2324 (input_varpool_node): Stream out order.
2325 (input_cgraph_1): Initialize order base; update call of
2326 lto_input_toplevel_asms.
2328 2011-10-04 Georg-Johann Lay <avr@gjlay.de>
2331 * config/avr/avr-protos.h (avr_legitimize_reload_address): New
2333 * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
2335 * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
2336 function. Log if avr_log.legitimize_reload_address.
2338 2011-10-04 Eric Botcazou <ebotcazou@adacore.com>
2340 * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
2342 2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2344 * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
2345 variables. Fix second operand of DR. Swap inputs for sdiv_qrnnd.
2347 2011-10-03 David S. Miller <davem@davemloft.net>
2349 * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
2350 GSR_REG an input operand to UNSPEC instead of a parallel USE.
2351 (faligndata<V64I:mode>_vis): Likewise and use DI mode.
2352 (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
2353 Reference GSR_REG in DI mode, simplify convoluted expressions by using
2355 (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
2357 2011-10-03 Maxim Kuvyrkov <maxim@codesourcery.com>
2359 * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
2361 2011-10-03 Jakub Jelinek <jakub@redhat.com>
2362 Ian Lance Taylor <iant@google.com>
2364 * godump.c (go_output_typedef): Support printing enum values that
2365 don't fit in a signed HOST_WIDE_INT.
2367 2011-10-03 Anatoly Sokolov <aesok@post.ru>
2369 * config/cris/cris.c (cris_output_addr_const_extra): Make static.
2370 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
2371 * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
2372 * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
2374 2011-10-03 Anatoly Sokolov <aesok@post.ru>
2376 * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
2377 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
2378 * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
2379 * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
2381 2011-10-03 Steve Ellcey <sje@cup.hp.com>
2384 * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
2385 (gcc_cv_ld_static_option): Ditto.
2386 (gcc_cv_ld_dynamic_option): Ditto.
2387 * configure: Regenerate.
2389 2011-10-03 David S. Miller <davem@davemloft.net>
2391 * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
2392 and 'si' patterns which describe the GSR changes explicitly in the
2393 RTL using zero_extract.
2394 (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
2396 * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
2397 GSR_REG in a USE, since it's now a true arg to the UNSPEC.
2399 2011-10-03 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2401 * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
2402 if given expression can be expanded by the target.
2403 (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
2404 using target vector instructions.
2405 * optabs.h: New optab vshuffle.
2406 (expand_vec_shuffle_expr_p): New prototype.
2407 (expand_vec_shuffle_expr): New prototype.
2408 (vshuffle_optab): New optab.
2409 * genopinit.c: Adjust to support vecshuffle.
2410 * c-tree.h (c_build_vec_shuffle_expr): New prototype.
2411 * expr.c (expand_expr_real_2): Adjust.
2412 * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
2413 recognizing the cases of two and three arguments.
2414 (convert_arguments) (build_binary_op)
2415 (scalar_to_vector) (build_array_ref): Spurious whitespace.
2416 * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
2417 * tree.def: New tree code VEC_SHUFFLE_EXPR.
2418 * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
2419 * tree-vect-generic.c (vector_element): New function. Returns an
2420 element of the vector at the given position.
2421 (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
2422 by the backend or expand an expression piecewise.
2423 (expand_vector_operations_1): Adjusted.
2424 (gate_expand_vector_operations_noop): New gate function.
2425 * Makefile.in (tree-vect-generic.o): New include.
2426 * gimple.c (get_gimple_rhs_num_ops): Adjust.
2427 * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
2428 * passes.c: Move veclower down.
2429 * tree-pretty-print.c (dump_generic_node): Recognize
2430 VEC_SHUFFLE_EXPR as valid expression.
2431 * c-parser.c (c_parser_get_builtin_args): Helper function for the
2432 builtins with variable number of arguments.
2433 (c_parser_postfix_expression): Use a new helper function for
2434 RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
2435 * tree-ssa-operands: Adjust.
2436 * c-family/c-common.c: New __builtin_shuffle keyword.
2437 * c-family/c-common.h: New __builtin_shuffle keyword.
2438 * gcc/doc/extend.texi: Adjust.
2440 * gcc/config/i386/sse.md: (sseshuffint) New mode_attr. Correspondence
2441 between the vector and the type of the mask when shuffling.
2442 (vecshuffle<mode>): New expansion.
2443 * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
2444 * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
2445 (ix86_vectorize_builtin_vec_perm_ok): Adjust.
2447 2011-10-03 Jakub Jelinek <jakub@redhat.com>
2449 PR tree-optimization/50587
2450 * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
2451 arg0 is not a SSA_NAME.
2453 2011-10-03 Richard Sandiford <rdsandiford@googlemail.com>
2455 * ipa-inline-analysis.c (MAX_TIME): Update comment.
2457 2011-10-02 Richard Henderson <rth@redhat.com>
2458 David S. Miller <davem@davemloft.net>
2460 * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
2461 conditional insn type setting, we always emit a shift.
2462 (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
2463 (*lshrsi3_extend): Rename to *lshrsi3_extend1.
2464 * config/sparc/predicates.md (const_one_operand): Delete.
2466 2011-10-02 Gerald Pfeifer <gerald@pfeifer.com>
2468 * invoke.texi (SPARC Options): Refer to GNU/Linux.
2470 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
2472 * config/mips/mips.c (mips_frame_barrier): New function.
2473 (mips_expand_prologue): Call it after allocating stack space.
2474 (mips_deallocate_stack): New function.
2475 (mips_expand_epilogue): Call mips_frame_barrier and
2476 mips_deallocate_stack.
2478 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
2481 * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
2482 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
2483 (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
2485 2011-10-02 Jan Hubicka <jh@suse.cz>
2487 * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
2489 * cgraphunit.c (ipa_passes): Remove unrechable nodes.
2490 * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
2491 * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
2492 functions are reachable when address is taken.
2493 * tree-sra.c (modify_function): Free dominance info.
2495 2011-10-02 Jan Hubicka <jh@suse.cz>
2497 * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
2499 * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
2500 (reset_inline_summary): New function.
2501 (compute_inline_parameters, inline_node_removal_hook,
2502 inline_edge_removal_hook): Use it.
2503 (inline_free_summary): Reset holders correctly.
2504 (inline_generate_summary): Free summary before computing it.
2506 2011-10-02 Paolo Carlini <paolo.carlini@oracle.com>
2508 PR preprocessor/36819
2509 * incpath.c (merge_include_chains): Call free_path on
2510 heads[QUOTE] and tails[QUOTE].
2512 2011-10-02 Jan Hubicka <jh@suse.cz>
2515 * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
2516 when resolution is already availbale from plugin.
2517 (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
2518 * cgraph.c (ld_plugin_symbol_resolution): Add
2519 prevailing_def_ironly_exp.
2520 * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
2521 * ipa.c (varpool_externally_visible_p): IRONLY variables are never
2523 * varasm.c (resolution_to_local_definition_p): Add
2524 LDPR_PREVAILING_DEF_IRONLY_EXP.
2525 (resolution_local_p): Likewise.
2527 2011-10-01 David S. Miller <davem@davemloft.net>
2529 * config/sparc/sparc.opt (VIS3): New option.
2530 * doc/invoke.texi: Document it.
2531 * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
2532 not capable of such instructions.
2533 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2534 to 0x300 when TARGET_VIS3.
2535 * config/sparc/sparc-modes.def: Create 16-byte vector modes.
2536 * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
2537 UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
2538 (V64N8, VASS): New mode iterators.
2539 (vis3_shift, vis3_addsub_ss): New code iterators.
2540 (vbits, vconstr): New mode attributes.
2541 (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
2542 (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
2543 fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
2544 fmean16_vis, fpadd64_vis, fpsub64_vis,
2545 <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
2546 VIS 3.0 instruction patterns.
2547 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
2548 default when targetting capable cpus. TARGET_VIS3 implies
2549 TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
2550 (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
2551 (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
2553 * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
2554 __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
2555 __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
2556 __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
2557 __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
2558 __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
2559 __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
2560 __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
2561 * doc/extend.texi: Document new VIS 3.0 builtins.
2563 2011-10-01 Eric Botcazou <ebotcazou@adacore.com>
2565 * ira-color.c (assign_hard_reg): Fix typo.
2567 2011-09-30 H.J. Lu <hongjiu.lu@intel.com>
2569 * doc/extend.texi: Add missing ','.
2571 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
2573 * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
2574 Enable -fmodulo-sched at -O2 and above.
2575 * config/c6x/c6x.md (doloop_end): New expander.
2576 (mvilc, sploop, spkernel, loop_end): New patterns.
2577 (loop_end with memory destination splitter): New.
2578 * config/c6x/c6x.c: Include "hw-doloop.h".
2579 (enum unitreqs): New.
2580 (unit_req_table): New typedef.
2581 (unit_reqs): New static variable.
2582 (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
2583 res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
2584 hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
2585 hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
2586 (struct c6x_sched_context): New member last_scheduled_iter0.
2587 (init_sched_state): Initialize it.
2588 (c6x_variable_issue): Update it.
2589 (sploop_max_uid_iter0): New static variable.
2590 (c6x_sched_reorder_1): Be careful about issuing sploop.
2591 (c6x_reorg): Call c6x_hwlooops before the final schedule.
2593 2011-09-30 Georg-Johann Lay <avr@gjlay.de>
2596 * config/avr/avr-protos.h (avr_log_t): New field address_cost.
2597 * config/avr/avr.c (avr_address_cost): Use it.
2598 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2599 (avr_log_vadump): Unknown %-codes finish printing.
2601 2011-09-30 Jakub Jelinek <jakub@redhat.com>
2604 * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
2605 input constraints allow mem and not reg, pass true instead of
2606 false as second argument to maybe_fold_reference.
2608 PR tree-optimization/46309
2609 * fold-const.c (make_range, merge_ranges): Remove prototypes.
2610 (make_range_step): New function.
2611 (make_range): Use it.
2612 * tree.h (make_range_step): New prototypes.
2613 * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
2614 * tree-ssa-reassoc.c: Include diagnostic-core.h.
2615 (struct range_entry): New type.
2616 (init_range_entry, range_entry_cmp, update_range_test,
2617 optimize_range_tests): New functions.
2618 (reassociate_bb): Call optimize_range_tests.
2620 2011-09-30 Jakub Jelinek <jakub@redhat.com>
2621 Richard Guenther <rguenther@suse.de>
2623 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
2624 BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
2625 * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise. Fix
2626 handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
2627 (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
2628 BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
2630 2011-09-30 Jan Beulich <jbeulich@suse.com>
2632 * lto-cgraph.c (output_cgraph): Remove processing of
2633 'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
2634 (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
2635 lto_input_toplevel_asms() instead.
2636 * lto-section-in.c (lto_section_name): Add "asm" entry.
2637 * lto-streamer-in.c (lto_input_toplevel_asms): New.
2638 * lto-streamer-out.c (lto_output_toplevel_asms): New.
2639 * lto-streamer.h (LTO_minor_version): Bump.
2640 (enum lto_section_type): Add LTO_section_asm.
2641 (struct lto_asm_header): New.
2642 (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
2643 * tree-streamer.h (streamer_write_string_cst): Declare.
2644 * tree-streamer-out.c (write_string_cst): Rename to
2645 streamer_write_string_cst and make global. Handle incoming string
2647 (streamer_write_tree_header): Adjust call to renamed function.
2649 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
2651 * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
2652 modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
2653 modulo_last_stage): New static variables.
2654 (set_modulo_params, discard_delay_pairs_above): New functions.
2655 (struct delay_pair): New member stages.
2656 (htab_i2_traverse, htab_i1_traverse): New static functions.
2657 (record_delay_slot_pair): New arg stages. All callers changed.
2659 (pair_delay): Take stages into account.
2660 (add_delay_dependencies): Don't do so for stage pairs.
2661 (struct sched_block_state): New member modulo_epilogue.
2662 (save_backtrack_point): Don't set SHADOW_P for stage pairs.
2663 (unschedule_insns_until): Decrease modulo_insns_scheduled.
2664 Set HARD_DEP without using or.
2665 (resolve_dependencies): New static function.
2666 (prune_ready_list): New arg modulo_epilogue_p. All callers changed.
2667 If it is true, allow only insns with INSN_EXACT_TICK set.
2668 (schedule_block): Return bool, always true for normal scheduling,
2669 true or false depending on modulo scheduling success otherwise.
2670 Add bookkeeping for modulo scheduling, and call resolve_dependencies
2671 on everything left over after a modulo schedule.
2672 (haifa_sched_init): Remove check_cfg call. Clear modulo_ii.
2673 * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
2675 (set_modulo_params, discard_delay_pairs_above): Declare.
2676 * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
2677 * doc/invoke.texi (--param): Document it.
2679 * sched-ebb.c (schedule_ebb): No longer static. Remove declaration.
2680 New arg modulo_scheduling. All callers changed. Move note handling
2681 code here from schedule_ebbs.
2682 (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
2683 out of schedule_ebbs.
2684 (schedule_ebbs): Call them. Remove note handling code moved to
2686 * sched-int.h (schedule_ebb, schedule_ebbs_init,
2687 schedule_ebbs_finish): Declare.
2689 2011-09-30 Richard Guenther <rguenther@suse.de>
2692 * tree-cfg.c (verify_gimple_comparison): Compare component
2693 mode sizes for vector comparisons.
2695 2011-09-30 Revital Eres <revital.eres@linaro.org>
2697 * ddg.c (autoinc_var_is_used_p): New function.
2698 (create_ddg_dep_from_intra_loop_link,
2699 add_cross_iteration_register_deps): Call it.
2700 * ddg.h (autoinc_var_is_used_p): Declare.
2701 * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
2702 (sms_schedule): Handle instructions with REG_INC.
2704 2011-09-30 Revital Eres <revital.eres@linaro.org>
2706 * modulo-sched.c (generate_reg_moves): Skip instructions that
2707 do not set a register and verify no regmoves are created for
2708 !single_set instructions.
2710 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
2712 * hw-doloop.c (scan_loop): Compute register usage only for non-debug
2715 2011-09-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
2718 * config/arm/iterators.md (qhs_zextenddi_cstr): New.
2719 (qhs_zextenddi_op): New.
2720 * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
2721 * config/arm/predicates.md ("arm_extendqisi_mem_op"):
2722 Distinguish between ARM and Thumb2 states.
2724 2011-09-30 David S. Miller <davem@davemloft.net>
2726 * config/sparc/sparc.opt (VIS2): New option.
2727 * doc/invoke.texi: Document it.
2728 * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
2729 UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
2730 UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
2731 (define_attr type): New insn type 'edgen'.
2732 (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
2733 edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
2734 edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
2736 * niagara.md: Handle edgen.
2737 * niagara2.md: Likewise.
2738 * ultra1_2.md: Likewise.
2739 * ultra3.md: Likewise.
2740 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2741 to 0x200 when TARGET_VIS2.
2742 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
2743 default when targetting capable cpus. TARGET_VIS2 implies
2744 TARGET_VIS, clear and it when TARGET_FPU is disabled.
2745 (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
2746 (sparc_expand_builtin): Fix predicate indexing when builtin returns
2748 (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
2749 * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
2750 __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
2751 __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
2752 __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
2753 * doc/extend.texi: Document new VIS 2.0 builtins.
2755 2011-09-29 Nick Clifton <nickc@redhat.com>
2756 Bernd Schmidt <bernds@codesourcery.com>
2758 * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
2759 * config/frv/frvend.c: Likewise.
2760 * config/frv/frv.c (frv_function_prologue): Move misplaced
2761 CALL_ARG_LOCATION notes back to their proper locations.
2763 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
2766 * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
2767 * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
2769 (avr_legitimate_address_p): Use avr_edump to print log information
2770 filtered by avr_log.
2771 (extra_constraint_Q): Ditto.
2772 (avr_legitimize_address): Ditto.
2773 (avr_rtx_costs): Ditto. Rewrite as wrapper for avr_rtx_costs_1.
2774 (final_prescan_insn): Use avr_log.rtx_costs as filter.
2776 2011-09-29 Richard Sandiford <richard.sandiford@linaro.org>
2778 * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
2779 * config/arm/arm.h (MODES_TIEABLE_P): Use it.
2780 * config/arm/arm.c (arm_modes_tieable_p): New function. Allow
2781 NEON vector and structure modes to be tied.
2783 2011-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
2785 * graphite-scop-detection.c (make_close_phi_nodes_unique): New
2786 forward declaration.
2787 (remove_duplicate_close_phi): Detect and repair creation of
2788 duplicate close-phis for a containing loop.
2790 2011-09-27 Andi Kleen <ak@linux.intel.com>
2792 * gcc.c (get_local_tick). Rename to get_random_number. Read from
2793 /dev/urandom. Add getpid call.
2794 (compare_debug_dump_opt_spec_function): Drop getpid call.
2796 2011-09-26 Andi Kleen <ak@linux.intel.com>
2798 * toplev.c (init_local_tick): Try reading random seed
2801 2011-09-26 Andi Kleen <ak@linux.intel.com>
2803 * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
2804 * lto-streamer.c (lto_get_section_name): Remove crc32_string.
2805 Handle numerical random seed.
2806 * lto-streamer.h (lto_file_decl_data): Change id to
2807 unsigned HOST_WIDE_INT.
2808 * toplev.c (random_seed): Add.
2809 (init_random_seed): Change for numerical random seed.
2810 (get_random_seed): Return as HOST_WIDE_INT.
2811 (set_random_seed): Crc32 existing string.
2812 * toplev.h (get_random_seed): Change to numercal return.
2813 * tree.c (get_file_function_name): Remove CRC. Handle
2814 numerical random seed.
2816 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
2819 * config.gcc (extra_objs): Add avr-log.o for $target in:
2820 avr-*-rtems*, avr-*-*.
2821 * config/avr/t-avr (avr-log.o): New rule to compile...
2822 * config/avr/avr-log.c: ...this new file.
2823 * config/avr/avr.opt (mlog=): New option.
2824 * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
2825 (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
2826 (avr_log_set_avr_log): New prototype.
2827 (avr_log_t): New typedef.
2828 (avr_log): New declaration.
2829 * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
2831 2011-09-29 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2833 * expr.c (do_store_flag): Expand vector comparison by
2834 building an appropriate VEC_COND_EXPR.
2835 * c-typeck.c (build_binary_op): Typecheck vector comparisons.
2836 (c_objc_common_truthvalue_conversion): Adjust.
2837 * tree-vect-generic.c (do_compare): Helper function.
2838 (expand_vector_comparison): Check if hardware supports
2839 vector comparison of the given type or expand vector piecewise.
2840 (expand_vector_operation): Treat comparison as binary
2841 operation of vector type.
2842 (expand_vector_operations_1): Adjust.
2844 2011-09-29 Richard Guenther <rguenther@suse.de>
2846 * tree.c (build_opaque_vector_type): Make opaque vectors
2847 variant types of the corresponding non-opaque type. Make
2848 sure to share opaque vector types properly.
2850 2011-09-29 David S. Miller <davem@davemloft.net>
2852 * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
2853 UNSPEC_ARRAY32): New unspec.
2854 (define_attr type): New type 'array'.
2855 (array{8,16,32}<P:mode>_vis): New patterns.
2856 * config/sparc/ultra1_2.md: Add reservations for 'array'.
2857 * config/sparc/ultra3.md: Likewise.
2858 * config/sparc/niagara.md: Likewise.
2859 * config/sparc/niagara2.md: Likewise.
2860 * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
2862 * config/sparc/visintrin.h (__vis_array8, __vis_array16,
2863 __vis_array32): New.
2864 * doc/extend.texi: Document new VIS builtins.
2866 * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
2867 (VIS pixel-compare insn): Just use <gcond:name>.
2869 * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
2870 code iterator used, so just use <code>. There are two mode iterators
2871 so explicitly use <GCM:gcm_name>.
2873 2011-09-29 Iain Sandoe <iains@gcc.gnu.org>
2875 * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
2878 2011-09-28 David S. Miller <davem@davemloft.net>
2880 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
2881 UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
2882 (UNSPEC_FCMP): New unspec.
2883 (gcond): New code iterator.
2884 (gcond_name): New code attr.
2885 (GCM): New mode iterator.
2886 (gcm_name): New mode attr.
2887 (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
2889 2011-09-28 Oleg Endo <oleg.endo@t-online.de>
2892 * config/sh/sh.md (negdi2): Move expansion into split to
2893 allow more combination options. Add T_REG clobber.
2894 (abssi2): New expander.
2895 (*negdi2, *abssi2, *negabssi2): New insns.
2896 (cneg): Change from insn to insn_and_split. Rename to
2897 negsi_cond. Add alternative for non-SH4.
2899 2011-09-28 Richard Sandiford <richard.sandiford@linaro.org>
2901 * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
2902 (neon_move_hi_quad_<mode>): Likewise.
2903 (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
2905 2011-09-28 Nick Clifton <nickc@redhat.com>
2907 * config/rx/predicates.md (rx_minmax_operand): New predicate.
2908 Accepts immediates and a restricted subset of MEMs.
2909 * config/rx/rx.md (int_modes): New iterator.
2910 (smaxsi3, sminsi3): Delete and replace with...
2911 (smax<int_mode>3, smin<int_mode>3): New patterns.
2912 (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
2914 2011-09-28 Richard Guenther <rguenther@suse.de>
2917 * fold-const.c (try_move_mult_to_index): Handle &a.array the
2918 same as &a.array[0].
2920 2011-09-28 Kai Tietz <ktietz@redhat.com>
2922 * configure.ac: Add test for new section attribute
2923 specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
2924 * config.in: Regenerated.
2925 * configure: Regenerated.
2926 * config/i386/winnt.c (i386_pe_asm_named_section): Emit
2927 new section flag "e" for excluded sections, if supported.
2928 Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
2930 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
2932 * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
2935 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
2937 * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
2940 2011-09-27 Sriraman Tallam <tmsriram@google.com>
2942 * output.h (SECTION_EXCLUDE): New macro.
2943 * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
2945 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
2947 * fwprop.c (forward_propagate_and_simplify): After checking
2948 reg/subreg combinations, check whether the modes are the same.
2950 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
2951 Richard Sandiford <rdsandiford@googlemail.com>
2953 * config/mips/mips.c (mips_add_cfa_restore): New function.
2954 (mips16e_save_restore_reg): Use it.
2955 (mips_restore_reg): Likewise. Split double FPRs for
2956 REG_CFA_RESTORE notes.
2958 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
2962 * tree-sra.c (build_ref_for_model): Use the type of the field as
2963 the type of the COMPONENT_REF.
2965 2011-09-27 Jeff Law <law@redhat.com>
2967 * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument. Scale
2968 non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
2969 (find_if_case_1): Use the probability of the THEN clause when
2970 determining if speculation is profitable.
2971 (find_if_case_2): Similarly for the ELSE clause.
2973 2011-09-27 Jakub Jelinek <jakub@redhat.com>
2975 * common.opt: Add -foptimize-strlen option.
2976 * Makefile.in (OBJS): Add tree-ssa-strlen.o.
2977 (tree-sssa-strlen.o): Add dependencies.
2978 * opts.c (default_options_table): Enable -foptimize-strlen
2979 by default at -O2 if not -Os.
2980 * passes.c (init_optimization_passes): Add pass_strlen
2981 after pass_object_sizes.
2982 * timevar.def (TV_TREE_STRLEN): New timevar.
2983 * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
2984 * tree-pass.h (pass_strlen): Declare.
2985 * tree-ssa-strlen.c: New file.
2986 * c-decl.c (merge_decls): If compatible stpcpy prototype
2987 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
2989 2011-09-27 Tom de Vries <tom@codesourcery.com>
2992 * tree-ssa-tail-merge.c: New file.
2993 (struct same_succ_def): Define.
2994 (same_succ, const_same_succ): New typedef.
2995 (struct bb_cluster_def): Define.
2996 (bb_cluster, const_bb_cluster): New typedef.
2997 (struct aux_bb_info): Define.
2998 (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
2999 (gvn_uses_equal): New function.
3000 (same_succ_print, same_succ_print_traverse, update_dep_bb)
3001 (stmt_update_dep_bb, local_def, same_succ_hash)
3002 (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
3003 (same_succ_reset): New function.
3004 (same_succ_htab, same_succ_edge_flags)
3005 (deleted_bbs, deleted_bb_preds): New var.
3006 (debug_same_succ): New function.
3007 (worklist): New var.
3008 (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
3009 (init_worklist, delete_worklist, delete_basic_block_same_succ)
3010 (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
3011 (print_cluster, debug_cluster, update_rep_bb)
3012 (add_bb_to_cluster, new_cluster, delete_cluster): New function.
3013 (all_clusters): New var.
3014 (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
3015 (merge_clusters, set_cluster): New function.
3016 (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
3017 (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
3018 (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
3019 (find_clusters_1, find_clusters): New function.
3020 (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
3021 (update_bbs): New var.
3022 (apply_clusters): New function.
3023 (update_debug_stmt, update_debug_stmts): New function.
3024 (tail_merge_optimize): New function.
3025 tree-pass.h (tail_merge_optimize): Declare.
3026 * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
3027 * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
3028 (tree-ssa-tail-merge.o): New rule.
3029 * opts.c (default_options_table): Set OPT_ftree_tail_merge by
3030 default at OPT_LEVELS_2_PLUS.
3031 * tree-ssa-sccvn.c (vn_valueize): Move to ...
3032 * tree-ssa-sccvn.h (vn_valueize): Here.
3033 * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
3034 * common.opt (ftree-tail-merge): New switch.
3035 * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
3036 (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
3037 * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
3038 (-ftree-tail-merge, max-tail-merge-comparisons)
3039 (max-tail-merge-iterations): New item.
3041 2011-09-27 Jan Hubicka <jh@suse.cz>
3043 * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
3045 2011-09-27 Jan Hubicka <jh@suse.cz>
3047 * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
3048 parameters passed by reference; handle loads from non-SSA scalars
3049 and update comments.
3051 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
3053 PR rtl-optimization/50249
3054 * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
3055 instead of opnum and type. All callers changed. Remove useless
3057 Search forward for other reloads of the same type for the same operand
3058 using the same register; if any are found, return false.
3059 (reload_regs_reach_end_p): Same argument changes; all callers changed.
3061 2011-09-27 Andi Kleen <ak@linux.intel.com>
3062 Jan Hubicka <jh@suse.cz>
3064 * doc/invoke.texi (ffat-lto-objects): Document.
3065 * toplev.c (compile_file): Do not output assembly when doing slim lto;
3066 Output __gnu_slim_lto when doing slim lto.
3067 * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
3068 (cgraph_optimize): Return early when doing slim lto.
3069 * opts.c (finish_options): Complain about lack of linker plugin
3070 when doing slim lto.
3071 * common.opt (ffat-lto-objects): New.
3073 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
3075 * ipa-inline-analysis.c (predicate_probability): Avoid comparison
3076 between signed and unsigned.
3078 2011-09-27 Ira Rosen <ira.rosen@linaro.org>
3080 * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
3082 (vectorizable_type_promotion): Likewise.
3083 (vect_analyze_stmt): Call vectorizable_type_demotion and
3084 vectorizable_type_promotion for basic blocks.
3085 (supportable_widening_operation): Don't assume loop vectorization.
3086 * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
3087 basic blocks. Update vectorization factor for basic block
3089 (vect_analyze_slp_instance): Allow multiple types for basic block
3090 vectorization. Recheck unrolling factor after construction of SLP
3093 2011-09-27 Richard Guenther <rguenther@suse.de>
3095 * tree-object-size.c (compute_object_sizes): Fix dumping of
3098 2011-09-27 Richard Guenther <rguenther@suse.de>
3100 PR tree-optimization/50363
3101 * tree-ssa-pre.c (create_expression_by_pieces): Handle
3102 pointer conversions in POINTER_PLUS_EXPRs properly.
3104 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
3106 * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
3107 (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
3108 (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
3109 (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
3110 that produce subreg moves. Define using VQX iterators.
3112 2011-09-27 Georg-Johann Lay <avr@gjlay.de>
3114 * config/avr/avr.md (ashrqi3): Split alternative "n"
3115 into its remaining parts C03, C04, C05, C06, C07 and describe
3116 impact in CC by attribute "cc" appropriately.
3117 * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
3120 2011-09-27 Jakub Jelinek <jakub@redhat.com>
3122 * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
3123 from 3 x MAX_MACHINE_MODE.
3124 (CONSTM1_RTX): Define.
3125 * emit-rtl.c (const_tiny_rtx): Change into array of
3126 4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
3127 (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
3129 (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
3130 MODE_VECTOR_INT modes.
3131 * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
3132 Optimize if one operand is CONSTM1_RTX.
3133 * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
3136 2011-09-26 David S. Miller <davem@davemloft.net>
3138 * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
3139 (fcmp{le,ne,gt,eq}{16,32}): Likewise.
3140 * config/sparc/visintrin.h: Update edge and pixel-compare
3141 intrinsics to return 'long' instead of 'int'.
3142 * doc/extend.texi: Update documentation to match.
3143 * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
3144 flat, allow any instruction. Otherwise, when V9 allow parallels
3145 which consist only of sets to registers outside of %o0 to %o5.
3146 (sparc_vis_init_builtins): Update VIS builtin types for edge
3149 * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
3150 is enabled, mark %gsr as global.
3151 * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
3152 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
3154 * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
3155 which will now define __VIS and __VIS__ when -mvis is enabled.
3156 * config/sparc/t-sparc: Likewise.
3157 * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
3158 and add t-sparc to tmake_file for all sparc targets.
3159 * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
3160 * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
3162 * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
3163 builtins for VIS vector addition and subtraction.
3164 * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
3165 __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
3166 __vis_fpsub32, __vis_fpsub32s): New.
3167 * doc/extend.texi: Document new VIS intrinsics.
3169 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3171 * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
3172 * config/avr/avr.c (avr_out_compare): Print shorter sequence for
3173 EQ/NE comparisons against +/-1 in the case of unused-after,
3176 2011-09-26 Jakub Jelinek <jakub@redhat.com>
3178 * gimple-fold.c (gimplify_and_update_call_from_tree): Set
3179 gctx.into_ssa after push_gimplify_context.
3181 * gimple.c (gimple_build_call_valist): New function.
3182 * gimple.h (gimple_build_call_valist): New prototype.
3183 * tree-ssa-propagate.c (finish_update_gimple_call): New function.
3184 (update_gimple_call): Likewise.
3185 (update_call_from_tree): Use finish_update_gimple_call.
3186 * tree-ssa-propagate.h (update_gimple_call): New prototype.
3188 2011-09-26 Richard Guenther <rguenther@suse.de>
3190 PR tree-optimization/50472
3191 * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
3192 volatile references.
3194 2011-09-26 Bingfeng Mei <bmei@broadcom.com>
3196 * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
3197 * target.def: (addr_space_subset_p): Likewise.
3199 2011-09-26 Tom de Vries <tom@codesourcery.com>
3201 * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
3202 * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
3203 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
3206 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3209 * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
3210 * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
3211 output_reload_insisf.
3212 (adjust_len): Set default to "no".
3213 Remove alternative "yes". Add alternatives: "mov8", "mov16",
3214 "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
3215 "lshrhi", "ashlsi, "ashrsi", "lshrsi".
3216 (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
3217 *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
3218 *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
3219 *lshrsi3_const): Set attribute "adjust_len".
3220 * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
3221 (output_movsisf): Don't pass insn to output_reload_insisf.
3222 (adjust_insn_length): Handle new alternatives to adjust_len.
3223 Remove handling of ADJUST_LEN_YES. Clean-up code.
3225 2011-09-26 Eric Botcazou <ebotcazou@adacore.com>
3227 * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
3228 may_trap_p to detect loads that may trap of fault.
3230 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3232 * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
3233 * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
3234 (*reload_inhi): Use it. Adapt call to output_reload_inhi to new
3236 (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
3237 * config/avr/avr.c: Rename output_reload_insisf_1 to
3238 output_reload_in_const.
3239 (avr_popcount_each_byte): Handle SFmode, too.
3240 (output_reload_in_const): Change so it can handle HI loads, too.
3241 Use avr_popcount_each_byte to work out if scratch register must be
3243 (output_reload_inhi): Rewrite using output_reload_in_const and...
3244 (output_movhi): ...use it to print constants' loads.
3245 (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
3247 2011-09-25 David S. Miller <davem@davemloft.net>
3249 * config/sparc/constraints.md (C, P, Z): New constraints for
3250 const_doube, const_int, and const_vector "all ones" values.
3251 Make unused constraint letters comment match reality.
3252 * config/sparc/predicates.md (const_all_ones_operand,
3253 register_or_zero_or_all_ones_operand): New predicates.
3254 * config/sparc/sparc.c (sparc_expand_move): Allow all ones
3255 as well as zero constants when VIS.
3256 (sparc_legitimate_constant_p): Likewise.
3257 * config/sparc/sparc.md (movsi_insn): Add fones alternative.
3258 (movsf_insn): Likewise
3259 (movdi_insn_sp64): Add fone alternative.
3260 (movdf_insn_sp32_v9): Likewise.
3261 (movdf_insn_sp64): Likewise.
3263 * configure.ac: Add feature check to make sure the assembler
3264 supports the FMAF, HPC, and VIS 3.0 instructions found on
3265 Niagara-3 and later cpus.
3266 * configure: Rebuild.
3267 * config.in: Likewise.
3268 * config/sparc/sparc.opt: New option '-mfmaf'.
3269 * config/sparc/sparc.md: Add float fused multiply-add patterns.
3270 * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
3271 (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
3272 * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
3273 ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
3274 * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
3275 by default for Niagara-3 and later. Turn it off if TARGET_FPU is
3277 (sparc_rtx_costs): Handle 'FMA'.
3278 * doc/invoke.texi: Document -mfmaf.
3280 2011-09-25 Jakub Jelinek <jakub@redhat.com>
3282 * tree-ssa-structalias.c (intra_create_variable_infos): Treat
3283 TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
3284 DECL_BY_REFERENCE parameters.
3286 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
3288 * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
3289 if there is no outgoing edge.
3291 * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
3294 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
3296 * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
3297 of vect_analyze_bb here.
3298 (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
3300 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
3302 * tree-data-ref.c (dr_analyze_innermost): Add new argument.
3303 Allow not simple iv if analyzing basic block.
3304 (create_data_ref): Update call to dr_analyze_innermost.
3305 (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
3306 * tree-loop-distribution.c (generate_memset_zero): Likewise.
3307 * tree-predcom.c (find_looparound_phi): Likewise.
3308 * tree-data-ref.h (dr_analyze_innermost): Add new argument.
3310 2011-09-24 David S. Miller <davem@davemloft.net>
3312 * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
3313 (SPARC_GSR_REG): Define.
3314 (FIXED_REGISTERS): Mark GSR as fixed.
3315 (CALL_USED_REGISTERS): Mark GSR as call used.
3316 (HARD_REGNO_NREGS): GSR is always 1 register.
3317 (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
3318 (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
3319 (REGISTER_NAMES): Add "%gsr".
3320 * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
3321 (UNSPEC_WRGSR): New unspec.
3322 (GSR_REG): New constant.
3323 (type): Add new insn type 'gsr'.
3324 (fpack16_vis, fpackfix_vis, fpack32_vis,
3325 faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
3326 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
3327 rdgsr_v8plus): New expanders and insns.
3328 (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
3329 using patterns which show that this is a plus in addition to a
3330 modification of GSR_REG, instead of an unspec.
3331 * config/sparc/ultra1_2.md: Handle 'gsr'.
3332 * config/sparc/ultra3.md: Likewise.
3333 * config/sparc/niagara.md: Likewise.
3334 * config/sparc/niagara2.md: Likewise.
3335 * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
3337 (sparc_option_override): Make -mvis imply -mv8plus.
3338 (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
3340 (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
3341 __builtin_vis_read_gsr.
3342 (sparc_expand_buildin): Handle builtins that take one argument and
3344 (sparc_fold_builtin): Never fold writes to %gsr.
3345 * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
3346 * doc/extend.texi: Document new VIS intrinsics.
3348 2011-09-23 Jan Hubicka <jh@suse.cz>
3350 * ipa-inline-transform.c (inline_call): Add comment.
3351 * ipa-inline.h (inline_param_summary): New structure and vector.
3352 (struct inline_edge_summary): Add param field.
3353 * ipa-inline-analysis.c (CHANGED): New constant.
3354 (add_clause): Handle CHANGED and NOT_CONSTANT.
3355 (predicate_probability): New function.
3356 (dump_condition): Dump CHANGED predicate.
3357 (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
3358 of unknown function wide invariant.
3359 (evaluate_conditions_for_edge): Handle change probabilities.
3360 (inline_edge_duplication_hook): Copy param summaries.
3361 (inline_edge_removal_hook): Free param summaries.
3362 (dump_inline_edge_summary): Fix dumping of indirect edges and callee
3363 sizes; dump param summaries.
3364 (will_be_nonconstant_predicate): Use CHANGED predicate.
3365 (record_modified_bb_info): New structure.
3366 (record_modified): New function.
3367 (param_change_prob): New function.
3368 (estimate_function_body_sizes): Compute param summaries.
3369 (estimate_edge_size_and_time): Add probability argument.
3370 (estimate_node_size_and_time): Add inline_param_summary argument;
3371 handle predicate probabilities.
3372 (remap_predicate): Fix formating.
3373 (remap_edge_change_prob): New function.
3374 (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
3375 (remap_edge_predicates): ... this one.
3376 (inline_merge_summary): Remap edge summaries; handle predicate
3377 probabilities; remove param summaries after we are done.
3378 (do_estimate_edge_time): Update.
3379 (do_estimate_edge_growth): Update.
3380 (read_inline_edge_summary): Read param info.
3381 (inline_read_summary): Fix formating.
3382 (write_inline_edge_summary): Write param summaries.
3384 2011-09-23 Jakub Jelinek <jakub@redhat.com>
3386 * config/i386/i386.c (ix86_print_operand): Handle %~.
3387 (ix86_print_operand_punct_valid_p): Return true also for '~'.
3388 * config/i386/sse.md (i128): New mode_attr.
3389 (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
3390 avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
3391 *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
3392 vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
3393 patterns, use "<sseinsnmode>" for "mode" attribute.
3394 (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
3395 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
3396 %~128 in the patterns, use "OI" for "mode" attribute.
3398 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
3401 * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
3403 (*cmpqi_sign_extend): Use s8_operand.
3404 (*cmphi, *cmpsi): Rewrite using avr_out_compare.
3405 * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
3407 (out_tsthi, out_tstsi): Remove prototypes.
3408 (avr_out_tsthi, avr_out_tstsi): New prototypes.
3409 * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
3410 (avr_asm_len): Negative length now sets *plen to -length.
3411 (compare_sign_p): Return bool instead of int.
3412 (compare_diff_p, compare_eq_p): Ditto and make static.
3413 (avr_out_tsthi): New function.
3414 (avr_out_tstsi): New function.
3415 (avr_out_compare): New function.
3416 (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
3419 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
3422 * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
3423 (addsi3): Rewrite using QI scratch register. Adjust text
3424 peepholes using plus:SI.
3425 (*addsi3_zero_extend.hi): New insn.
3426 (*subsi3_zero_extend.hi): New insn.
3427 (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
3428 (*subsi3_zero_extend): Ditto.
3429 (subsi3): Change predicate #2 to register_operand.
3430 * config/avr/avr-protos.h (avr_out_plus): New prototype.
3431 (avr_out_plus_1): New static function.
3432 (avr_out_plus): New function.
3433 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
3435 2011-09-23 Jakub Jelinek <jakub@redhat.com>
3437 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
3438 GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
3440 2011-09-23 Ian Lance Taylor <iant@google.com>
3442 * godump.c (go_define): Treat a single character in single quotes,
3443 or a string, as an operand.
3445 2011-09-23 Martin Jambor <mjambor@suse.cz>
3447 * ipa-prop.h (jump_func_type): Updated comments.
3448 (ipa_known_type_data): New type.
3449 (ipa_jump_func): Use it to describe known type jump functions.
3450 * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
3451 reflect the new known type jump function contents.
3452 (compute_known_type_jump_func): Likewise.
3453 (combine_known_type_and_ancestor_jfs): Likewise.
3454 (try_make_edge_direct_virtual_call): Likewise.
3455 (ipa_write_jump_function): Likewise.
3456 (ipa_read_jump_function): Likewise.
3457 * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
3458 (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
3459 (propagate_accross_jump_function): Likewise.
3461 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
3464 * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
3465 (rotlqi3_4): Turn insn into expander.
3466 (*rotlqi3): New insn.
3467 (rotlhi3, rotlsi3): Support rotate left/right by 1.
3468 (*rotlhi2.1, *rotlhi2.15): New insns.
3469 (*rotlsi2.1, *rotlsi2.31): New insns.
3470 * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
3472 2011-09-23 Bin Cheng <bin.cheng@arm.com>
3474 * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
3476 2011-09-22 Maxim Kuvyrkov <maxim@codesourcery.com>
3478 * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
3480 2011-09-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3482 * reload.c (find_reloads): Set operand_mode to Pmode for address
3483 operands consisting of just a CONST_INT.
3485 2011-09-22 Uros Bizjak <ubizjak@gmail.com>
3488 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
3489 blendv, force op_true to register if it doesn't satisfy
3490 nonimmediate_operand predicate.
3492 2011-09-22 Richard Sandiford <rdsandiford@googlemail.com>
3496 * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
3497 get the locate.where_pad value for register-only arguments.
3498 * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
3499 (arm_pad_reg_upward): Handle null types.
3501 2011-09-22 Jan Hubicka <jh@suse.cz>
3503 * ipa-inline-analysis.c: Fix overly long lines.
3505 2011-09-22 Jan Hubicka <jh@suse.cz>
3507 * ipa-inline-transform.c (inline_call): Always update jump functions
3509 * ipa-inline.c (ipa_inline): Likewise; do not call
3510 ipa_create_all_structures_for_iinln.
3511 (ipa_inline): Always free jump functions.
3512 * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
3513 (remap_edge_predicates): Fix pasto.
3514 (inline_merge_summary): Remove nlined edge predicate; remove hack.
3515 (inline_analyze_function): Always initialize jump functions.
3516 (inline_generate_summary): Likewise.
3517 (inline_write_summary): Always write jump functions when ipa-cp
3519 (inline_read_summary): Always read jump functions when ipa-cp
3521 * ipa-prop.c (iinlining_processed_edges): Remove.
3522 (update_indirect_edges_after_inlining): Do not use
3523 iinlining_processed_edges; instead set param_index to -1.
3524 (propagate_info_to_inlined_callees): Only try to indirect inlining
3525 when asked to do so; update jump functions of indirect calls, too;
3526 remove jump functions of the inlined edge.
3527 (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
3528 (ipa_create_all_structures_for_iinln): Remove.
3529 (ipa_free_all_structures_after_iinln): Do not free
3530 iinlining_processed_edges.
3531 * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
3533 2011-09-22 Richard Sandiford <richard.sandiford@linaro.org>
3535 * config/arm/predicates.md (expandable_comparison_operator): New
3536 predicate, extracted from...
3537 (arm_comparison_operator): ...here.
3538 * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
3539 (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
3540 (movdfcc): Use expandable_comparison_operator.
3542 2011-09-22 Georg-Johann Lay <avr@gjlay.de>
3546 * config/avr/avr-protos.h (avr_out_bitop): New prototype.
3547 (avr_popcount_each_byte): New prototype.
3548 * config/avr/avr.c (avr_popcount): New static function.
3549 (avr_popcount_each_byte): New function.
3550 (avr_out_bitop): New function.
3551 (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
3552 avr_out_bitop. Cleanup code.
3553 * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
3554 (Ca4, Co4, Cx4): New constraints.
3555 * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
3557 (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
3558 (andsi3, iorsi3, xorsi3): Ditto.
3559 (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
3561 2011-09-22 Ira Rosen <ira.rosen@linaro.org>
3563 PR tree-optimization/50451
3564 * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
3565 constant operands in reduction.
3566 (vect_get_slp_defs): Don't create vector operand for NULL scalar
3569 2011-09-22 David S. Miller <davem@davemloft.net>
3571 * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
3572 fpack16, fpack32, fpackfix as const.
3574 * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
3575 I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
3576 constants. Use them everywhere.
3578 2011-09-22 Oleg Endo <oleg.endo@t-online.de>
3580 * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
3581 Added AND special case. Adapted comments.
3582 (sh_rtx_costs): Added XOR and IOR case.
3584 2011-09-21 Jan Hubicka <jh@suse.cz>
3586 * ipa-inline-analsis.c (compute_inline_parameters): Set
3587 cfun and current_function_decl.
3589 2011-09-21 Jan Hubicka <jh@suse.cz>
3591 * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
3592 handled components in parameter of builtin_constant_p.
3593 (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
3595 2011-09-21 Jan Hubicka <jh@suse.cz>
3597 * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
3598 * ipa-inline.h (estimate_edge_time): Fix pasto.
3599 * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
3601 2011-09-21 Jakub Jelinek <jakub@redhat.com>
3603 * config/i386/i386.c (ix86_expand_sse_movcc): Use
3604 blendvps, blendvpd and pblendvb if possible.
3606 2011-09-21 Uros Bizjak <ubizjak@gmail.com>
3609 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
3610 operand 1 predicate to register_operand and operand 2 predicate
3611 to nonimmediate_operand.
3612 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
3613 xop_pcmov, force op_true to register. Also, force op_false to
3614 register if it doesn't satisfy nonimmediate_operand predicate.
3616 2011-09-21 Kirill Yukhin <kirill.yukhin@intel.com>
3618 * config/i386/bmi2intrin.h (_mulx_u64): New.
3621 2011-09-21 Jan Hubicka <jh@suse.cz>
3623 PR tree-optimization/50433
3624 * ipa-inline-analysis.c (eliminated_by_inlining_prob):
3625 Use get_base_address.
3627 2011-09-21 Jakub Jelinek <jakub@redhat.com>
3629 * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
3630 nonimmediate_operand instead of register_operand predicate for operands
3631 1 and 2, force them into registers if expanding them as comparison.
3632 (<code><mode>3 umaxmin:VI124_128 expander): Similarly. For UMAX
3633 V8HImode force into register just operand 1.
3635 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
3638 * config/avr/avr.c (avr_function_arg_advance): Change error to
3639 warning if a fixed register is needed as function argument.
3641 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
3645 * config/avr/avr.md (adjust_len): New insn attribute.
3646 (*reload_insi, *reload_insf): Use it.
3647 (*movsi, *movsf): Use new interface of output_movsisf.
3648 * config/avr/avr-protos.h (output_movsisf): Change prototype.
3649 * config/avr/avr.c (output_movsisf): Ditto.
3650 (adjust_insn_length): Use insn attribute "adjust_len" to adjust
3651 lengths of insns *reload_insi, *reload_insf.
3652 (output_reload_insisf_1): New static function.
3653 (output_reload_insisf): Use it.
3655 2011-09-21 David S. Miller <davem@davemloft.net>
3657 * config/sparc/sparc.c (def_builtin): Change from macro into function.
3658 (def_builtin_const): New.
3659 (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
3660 other than alignaddr and falignaddr.
3662 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
3663 UNSPEC_FCMPEQ): New unspec codes.
3664 (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
3665 fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
3666 * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
3667 new pixel compare VIS patterns.
3668 * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
3669 __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
3670 __vis_fcmpeq16, __vis_fcmpeq32): New.
3671 * doc/extend.texi: Document new pixel compare VIS intrinsics.
3673 2011-09-21 Tom de Vries <tom@codesourcery.com>
3675 * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
3677 2011-09-20 David S. Miller <davem@davemloft.net>
3679 * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
3680 (aligneddrl<P:mode>_vis): New pattern.
3681 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
3682 edge32l_vis): Adjust to take Pmode arguments, and return SImode.
3683 * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
3684 alignaddrl insn, and adjust edge operations for updated types.
3685 * config/sparc/visintrin.h: Likewise.
3686 * doc/extend.texi: Make typing in VIS documentation match reality.
3688 2011-09-20 Terry Guo <terry.guo@arm.com>
3690 * config/arm/arm-arches.def: Add armv6s-m.
3691 * config/arm/arm-tables.opt: Regenerate.
3693 2011-09-20 Wei Guozhi <carrot@google.com>
3695 PR rtl-optimization/49452
3696 * postreload.c (reload_combine): Invalidate use information when across
3699 2011-09-19 Maxim Kuvyrkov <maxim@codesourcery.com>
3701 * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
3702 Remove maintenance overhead.
3703 (haifa_sched_init, sched_finish): Update.
3705 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
3707 * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
3708 to calculate unit, prefix_rep and prefix_data16 attributes.
3709 (*mov<mode>_internal): Ditto for unit attribute.
3710 (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
3711 (*movv2sf_internal): Ditto.
3712 * config/i386/sse.md (VI1248_256): Remove mode iterator.
3713 (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
3714 (*avx2_eq<mode>3): Ditto.
3715 (avx2_gt<mode>3): Ditto.
3717 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
3719 * config/i386/i386.md (maxmin): New code iterator.
3720 * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
3721 from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
3723 (*avx2_<maxmin:code><mode>3): Macroize isn from
3724 *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
3725 maxmin code iterator.
3726 (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
3727 (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
3728 <umaxmin:code>v16qi3.
3730 2011-09-19 Alan Modra <amodra@gmail.com>
3731 Michael Meissner <meissner@linux.vnet.ibm.com>
3734 * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
3735 split the load of the indirect function's TOC from the call to
3736 prevent the compiler from moving the load of the new TOC above
3737 code that references the current function's TOC.
3738 (call_indirect_aix<ptrsize>_internal): Ditto.
3739 (call_indirect_aix<ptrsize>_nor11): Ditto.
3740 (call_indirect_aix<ptrsize>_internal2): Ditto.
3741 (call_value_indirect_aix<ptrsize>): Ditto.
3742 (call_value_indirect_aix<ptrsize>_internal): Ditto.
3743 (call_value_indirect_aix<ptrsize>_nor11): Ditto.
3744 (call_value_indirect_aix<ptrsize>_internal2): Ditto.
3746 2011-09-19 Jakub Jelinek <jakub@redhat.com>
3748 * config/i386/sse.md (*sse4_1_extractps): Change into
3749 define_insn_and_split, add =x 0 n and =x x n alternatives
3750 and split them after reload.
3752 2011-09-19 Alexandre Oliva <aoliva@redhat.com>
3754 * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
3756 2011-09-19 Alexandre Oliva <aoliva@redhat.com>
3758 * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
3760 2011-09-19 Ira Rosen <ira.rosen@linaro.org>
3762 PR tree-optimization/50413
3763 * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
3764 a basic block if one of its data-refs can't be analyzed.
3766 2011-09-19 Paul Brook <paul@codesourcery.com>
3768 * config/arm/predicates.md (shift_amount_operand): Check constant
3769 shift count is in range.
3770 (const_shift_operand): Remove.
3772 2011-09-18 Eric Botcazou <ebotcazou@adacore.com>
3773 Iain Sandoe <developer@sandoe-acoustics.co.uk>
3776 * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
3777 * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
3779 2011-09-18 H.J. Lu <hongjiu.lu@intel.com>
3781 * config/i386/bmiintrin.h: Remove tmp.
3782 * config/i386/tbmintrin.h: Likewise.
3784 2011-09-18 Ira Rosen <ira.rosen@linaro.org>
3786 PR tree-optimization/50414
3787 * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
3790 2011-09-18 Ira Rosen <ira.rosen@linaro.org>
3792 PR tree-optimization/50412
3793 * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
3794 acceses that require epilogue loop if vectorizing outer loop.
3796 2011-09-17 David S. Miller <davem@davemloft.net>
3798 * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
3799 UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
3801 (define_attr type): New type 'edge'.
3802 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
3803 edge32l_vis): New patterns.
3804 * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
3805 * config/sparc/ultra3.md: Likewise.
3806 * config/sparc/niagara.md: Likewise.
3807 * config/sparc/niagara2.md: Likewise.
3808 * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
3809 builtins for VIS edge instructions.
3810 * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
3811 (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
3813 (__v8qi, __v4qi): Make unsigned.
3814 (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
3815 __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
3816 __vis_fpack32): Fix types.
3817 * doc/extend.texi: Document new 'edge' VIS intrinsics.
3819 * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
3821 (niagara3_costs): New.
3822 (sparc_option_override): Use it.
3823 * gcc/config/sparc/niagara2.md: Adjust with more accurate
3824 Niagara-3 reservations.
3826 2011-09-17 Jakub Jelinek <jakub@redhat.com>
3828 * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
3829 (sse2_avx, sseinsnmode): Add V2TI.
3830 (REDUC_SMINMAX_MODE): New mode iterator.
3831 (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
3832 reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
3833 (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
3834 (sse2_lshrv1ti3): Rename to...
3835 (<sse2_avx2>_lshr<mode>3): ... this. Use VIMAX_AVX2 mode
3836 iterator. Move before umaxmin expanders.
3837 * config/i386/i386.h (VALID_AVX256_REG_MODE,
3838 SSE_REG_MODE_P): Accept V2TImode.
3839 * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
3840 V16HImode, V8SImode and V4DImode.
3842 * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
3844 (ix86_build_signbit_mask): Likewise.
3845 (ix86_expand_int_vcond): Likewise. Handle V16HImode and V32QImode.
3846 (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
3847 instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
3848 * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
3849 (<code><mode>3) ... this.
3850 (avx2_<code><mode>3 smaxmin expand): Rename to...
3851 (<code><mode>3) ... this.
3852 (smax<mode>3, smin<mode>3): Macroize using smaxmin code iterator.
3853 (smaxv2di3, sminv2di3): Macroize using smaxmin code iterator and
3854 VI8_AVX2 mode iterator.
3855 (umaxv2di3, uminv2di3): Macroize using umaxmin code iterator and
3856 VI8_AVX2 mode iterator.
3857 (vcond<V_256:mode><VI_256:mode>, vcondu<V_256:mode><VI_256:mode>):
3860 2011-09-17 Richard Sandiford <rdsandiford@googlemail.com>
3862 * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
3865 2011-09-16 David S. Miller <davem@davemloft.net>
3867 * config/sparc/visintrin.h: New file.
3868 * config.gcc: Add it to extra_headers on sparc.
3870 2011-09-16 Jakub Jelinek <jakub@redhat.com>
3872 * config/i386/i386.c (ix86_expand_reduc_v4sf): Rename to ...
3873 (ix86_expand_reduc): ... this. Handle also V8SFmode and V4DFmode.
3874 * config/i386/sse.md (reduc_splus_v4sf, reduc_smax_v4sf,
3875 reduc_smin_v4sf): Adjust callers.
3876 (reduc_smax_v8sf, reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df):
3879 * config/i386/sse.md (vec_extract_hi_<mode>,
3880 vec_extract_hi_v16hi, vec_extract_hi_v32qi): Use
3881 vextracti128 instead of vextractf128 for -mavx2 and
3882 integer vectors. For V4DFmode fix up mode attribute.
3883 (VEC_EXTRACT_MODE): For TARGET_AVX add 32-byte vectors.
3884 (vec_set_lo_<mode>, vec_set_hi_<mode>): For VI8F_256 modes use V4DF
3885 instead of V8SF mode attribute.
3886 (avx2_extracti128): Change into define_expand.
3887 * config/i386/i386.c (ix86_expand_vector_extract): Handle
3888 32-byte vector modes if TARGET_AVX.
3890 2011-09-16 Georg-Johann Lay <avr@gjlay.de>
3892 * config/avr/avr.md: (umulqihi3, mulqihi3): Write as one pattern.
3893 (umulqi3_highpart, smulqi3_highpart): Ditto.
3894 (*maddqihi4.const, *umaddqihi4.uconst): Ditto.
3895 (*msubqihi4.const, *umsubqihi4.uconst): Ditto.
3896 (*muluqihi3.uconst, *mulsqihi3.sconst): Ditto.
3898 2011-09-16 Georg-Johann Lay <avr@gjlay.de>
3901 * config/avr/avr.md (*ashiftqihi2.signx.1): New insn.
3902 (*maddqi4, *maddqi4.const): New insns.
3903 (*msubqi4, *msubqi4.const): New insns.
3904 * config/avr/avr.c (avr_rtx_costs): Record costs of above in cases
3905 PLUS:QI and MINUS:QI. Increase costs of multiply-add/-sub for
3906 HImode by 1 in the case of multiplying with a CONST_INT.
3907 Record cost of *ashiftqihi2.signx.1 in case ASHIFT:QI.
3909 2011-09-15 Jan Hubicka <jh@suse.cz>
3912 * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
3913 error_mark_node in the DECL_INITIAL of vtable.
3915 2011-09-15 Diego Novillo <dnovillo@google.com>
3917 * Makefile.in (SYSROOT_CFLAGS_FOR_TARGET): Define from
3918 @SYSROOT_CFLAGS_FOR_TARGET@.
3919 * configure.ac (SYSROOT_CFLAGS_FOR_TARGET): Set from build-sysroot.
3920 * configure: Regenerate.
3921 (site.exp): Add definition of TEST_ALWAYS_FLAGS.
3922 Remove setting of GCC_UNDER_TEST.
3924 2011-09-15 Uros Bizjak <ubizjak@gmail.com>
3926 * config/i386/i386.c (output_fp_compare): Return %v prefixed
3927 instruction mnemonics for TARGET_AVX.
3929 * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
3930 "type" attribute calculation.
3931 (*movdf_internal): Ditto.
3932 (*movsf_internal): Ditto.
3934 2011-09-15 James Greenhalgh <james.greenhalgh@arm.com>
3936 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
3938 2011-09-15 Jason Merrill <jason@redhat.com>
3941 * expr.c (count_type_elements): Handle NULLPTR_TYPE.
3943 2011-09-15 Jan Hubicka <jh@suse.cz>
3945 * ipa-inline-analysis.c (add_condition): Add conditions parameter;
3946 simplify obviously true clauses.
3947 (and_predicates, or_predicates): Add conditions parameter.
3948 (inline_duplication_hoook): Update.
3949 (mark_modified): New function.
3950 (unmodified_parm): New function.
3951 (eliminated_by_inlining_prob, (set_cond_stmt_execution_predicate,
3952 set_switch_stmt_execution_predicate, will_be_nonconstant_predicate):
3953 Use unmodified_parm.
3954 (estimate_function_body_sizes): Update.
3955 (remap_predicate): Update.
3957 2011-09-15 Ira Rosen <ira.rosen@linaro.org>
3959 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
3960 read-after-read dependencies in basic block SLP.
3962 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3964 * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref