OSDN Git Service

e07de320d7fe95385b78c1ad1d0be4e57aca7464
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-10-19  Jan Hubicka  <jh@suse.cz>
2
3         * ipa-inline.c (inline_small_functions): Always update all calles after
4         inlining.
5
6 2011-10-19  Jan Hubicka  <jh@suse.cz>
7
8         PR bootstrap/50709
9         * ipa-inline.c (inline_small_functions): Fix checking code to not make
10         effect on fibheap stability.
11
12 2011-10-20  Maxim Kuvyrkov  <maxim@codesourcery.com>
13
14         * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
15
16 2011-10-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
17
18        PR target/50106
19        * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
20         reg size from 1-3.
21
22 2011-10-20  Richard Guenther  <rguenther@suse.de>
23
24         * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
25         and rotates to the set of expensive operations.
26
27 2011-10-19  David S. Miller  <davem@davemloft.net>
28
29         * config/sparc/sparc.c (sparc_expand_move): Use
30         can_create_pseudo_p.
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.
36
37 2011-10-20  Dehao Chen  <dehao@google.com>
38
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
43
44 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
45
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.
54
55         PR middle-end/50754
56         * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
57         VEC_PERM_EXPR.
58
59 2011-10-19  Bernd Schmidt  <bernds@codesourcery.com>
60
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
81         nonnull.
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.
87
88 2011-10-19  Tom de Vries  <tom@codesourcery.com>
89
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.
95
96 2011-10-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
97
98         PR bootstrap/50777
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.
105
106 2011-10-19  Alexandre Oliva  <aoliva@redhat.com>
107
108         PR debug/49310
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.
121         (dv_as_rtx): New.
122         (dv_onepart_p): Return a onepart_enum_t.
123         (onepart_pool): New.
124         (dv_pool): Remove.
125         (dv_from_rtx): New.
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
134         cselib locs.
135         (variable_union): Use onepart field, adjust access to offset.
136         (NO_LOC_P): New.
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
155         and value chains.
156         (dataflow_set_remove_mem_locs): Likewise.  Use VAR_LOC_FROM.
157         (variable_different_p): Use onepart field.  Move onepart test out
158         of the loop.
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
172         access to offset.
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
202         from dropped_values.
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
212         if HAVE_window_save.
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.
217
218 2011-10-19  Georg-Johann Lay  <avr@gjlay.de>
219
220         PR target/50447
221         * config/avr/avr.md (cc): New alternative out_plus_noclobber.
222         (adjust_len): Ditto.
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.
236
237 2011-10-19  Richard Guenther  <rguenther@suse.de>
238
239         PR middle-end/50780
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.
244
245 2011-10-19  Roland Stigge  <stigge@antcom.de>
246
247         PR translation/48638
248         * plugin.c (add_new_plugin): Fix typo in fatal_error message.
249
250 2011-10-19  Roland Stigge  <stigge@antcom.de>
251
252         PR translation/49517
253         * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
254
255 2011-10-19  Richard Guenther  <rguenther@suse.de>
256
257         PR middle-end/50768
258         * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
259
260 2011-10-19  Andrey Belevantsev  <abel@ispras.ru>
261
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.
266
267 2011-10-19  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
268
269         PR target/50310
270         * config/spu/spu.c (spu_emit_vector_compare): Support unordered
271         floating-point comparisons.
272
273 2011-10-19  Jan Hubicka  <jh@suse.cz>
274
275         * cgraphunit.c (handle_alias_pairs): Also handle wekref with destination
276         declared.
277         (output_weakrefs): New function.
278         * varpool.c (varpool_create_variable_alias): Handle external aliases.
279
280 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
281
282         * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
283         second argument instead of mode.
284
285 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
286
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
292         permutations.
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
296         garbage.
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
302         vector modes.
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.
306
307 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
308
309         * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
310         before exiting.
311
312 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
313
314         PR tree-optimization/50717
315
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.
320
321 2011-10-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
322
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.
331
332 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
333
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.
338
339 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
340
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.
352
353 2011-10-18  Alexander Monakov  <amonakov@ispras.ru>
354
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.
360
361 2011-10-18  Richard Guenther  <rguenther@suse.de>
362
363         PR tree-optimization/50767
364         * tree-ssa-pre.c (create_expression_by_pieces): Update the
365         folded statement.
366
367 2011-10-18  Julian Brown  <julian@codesourcery.com>
368
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.
373
374 2011-10-18  Ira Rosen  <ira.rosen@linaro.org>
375
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
405         widening shifts.
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>):
413         Likewise.
414         * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
415         New.
416         * config/arm/iterators.md (V_innermode): New.
417         * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
418         for widening shift.
419
420 2011-10-18  Richard Guenther  <rguenther@suse.de>
421
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
431         field.
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
438         to NONLOCAL.
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.
447
448 2011-10-18  Tom de Vries  <tom@codesourcery.com>
449
450         PR tree-optimization/50672
451         * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
452         factored out of ...
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
458         deleted basic block.
459         (tail_merge_optimize): Add argument to call to purge_bbs.
460
461 2011-10-18  Richard Guenther  <rguenther@suse.de>
462
463         PR middle-end/50716
464         * expr.c (get_object_or_type_alignment): New function.
465         (expand_assignment): Use it.
466         (expand_expr_real_1): Likewise.
467
468 2011-10-18  Dodji Seketeli  <dodji@redhat.com>
469
470         PR bootstrap/50760
471         * input.c (dump_line_table_statistics): Use long, not size_t.
472
473 2011-10-17  Eric Botcazou  <ebotcazou@adacore.com>
474
475         * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
476
477 2011-10-17  Simon Baldwin  <simonb@google.com>
478             Ian Lance Taylor  <iant@google.com>
479
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
486         use i386/t-djgpp.
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.
526
527 2011-10-17  Richard Henderson  <rth@redhat.com>
528
529         * config/sparc/sparc.md: Use register_or_zero_operand where rJ
530         is the constraint.
531
532         * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
533         patterns.
534         * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
535         * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
536
537 2011-10-17  David S. Miller  <davem@davemloft.net>
538
539         * config/sparc/sparc-modes.def: Add single entry vector modes for
540         DImode and SImode.
541         * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
542         mode iterators.
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.
551         (subsi3): Likewise.
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
588         with...
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.
610
611 2011-10-17  Kai Tietz  <ktietz@redhat.com>
612
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.
618
619 2011-10-17  Andi Kleen  <ak@linux.intel.com>
620
621         * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
622
623 2011-10-17  Georg-Johann Lay  <avr@gjlay.de>
624
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
630         mcu_mega attribute.
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.
637         (jump): 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
644         RTX pattern.
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.
651
652 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
653
654         PR c++/50757
655         * doc/invoke.texi ([Wnonnull]): Update.
656
657 2011-10-17  Richard Henderson  <rth@redhat.com>
658
659         PR 50746
660         * optabs.c (expand_vec_perm_expr): Fix indexing error.
661
662 2011-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>
663
664         * configure.ac: Display `yes' if the SystemTap header has been
665         found.
666         * configure: Regenerate.
667
668 2011-10-08  Andi Kleen  <ak@linux.intel.com>
669
670         PR other/50636
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.
677
678 2011-10-17  Richard Guenther  <rguenther@suse.de>
679
680         PR tree-optimization/50729
681         * tree-vrp.c (extract_range_from_unary_expr_1): Remove
682         redundant test.
683         (simplify_conversion_using_ranges): Properly test the
684         intermediate result.
685
686 2011-10-15  Tom Tromey  <tromey@redhat.com>
687             Dodji Seketeli  <dodji@redhat.com>
688
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.
701
702 2011-10-15  Tom Tromey  <tromey@redhat.com>
703             Dodji Seketeli  <dodji@redhat.com>
704
705         * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New
706         macros.
707         (num_expanded_macros_counter, num_macro_tokens_counter): Declare
708         new counters.
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.
712
713 2011-10-15  Tom Tromey  <tromey@redhat.com>
714             Dodji Seketeli  <dodji@redhat.com>
715
716         * doc/cppopts.texi: Document -fdebug-cpp.
717         * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor
718         options.
719
720 2011-10-15  Tom Tromey  <tromey@redhat.com>
721             Dodji Seketeli  <dodji@redhat.com>
722
723         * gcc/diagnostic.h (diagnostic_report_current_module): Add a
724         location parameter.
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
736         new function.
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.
740
741 2011-10-15  Tom Tromey  <tromey@redhat.com>
742             Dodji Seketeli  <dodji@redhat.com>
743
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.
747
748 2011-10-15  Tom Tromey  <tromey@redhat>
749             Dodji Seketeli  <dodji@redhat.com>
750
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.
756         instead.
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.
761
762
763 2011-10-08  Andi Kleen  <ak@linux.intel.com>
764
765         * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
766
767 2011-10-13  Andi Kleen  <ak@linux.intel.com>
768
769         * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
770
771 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
772
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
776         pattern statements.
777
778 2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>
779
780         PR rtl-optimization/50615
781         * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
782
783 2011-10-16  Jakub Jelinek  <jakub@redhat.com>
784
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.
791
792 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
793
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
796         interleaving chain.
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
802         the recursive calls.
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.
809
810 2011-10-15  Jan Hubicka  <jh@suse.cz>
811
812         PR target/48668
813         PR target/50689
814         * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
815         after function body.
816
817 2011-10-15  Richard Henderson  <rth@redhat.com>
818
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,
824         not the builtin.
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.
828
829 2011-10-15  Alan Modra  <amodra@gmail.com>
830
831         PR bootstrap/50738
832         * ifcvt.c (dead_or_predicable): Revert accidental commit with
833         HAVE_simple_return test.
834
835 2011-10-15  Alan Modra  <amodra@gmail.com>
836
837         * ifcvt.c (dead_or_predicable): Disable if-conversion when
838         doing so is likely to kill a shrink-wrapping opportunity.
839
840         PR rtl-optimization/49941
841         * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
842
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.
849
850 2011-10-14  David S. Miller  <davem@davemloft.net>
851
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
866         cpu is at least v9.
867
868 2011-10-15  Oleg Endo  <oleg.endo@t-online.de>
869
870         PR target/49263
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
880         asm output.
881         (*andsi_compact): Reorder alternatives so that K08 is considered first.
882
883 2011-10-14  Eric Botcazou  <ebotcazou@adacore.com>
884
885         PR target/50354
886         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
887         processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
888
889 2011-10-14  Gerald Pfeifer  <gerald@pfeifer.com>
890
891         * invoke.texi (AVR Options): Avoid \leq{}.
892
893 2011-10-14  Kai Tietz  <ktietz@redhat.com>
894
895         * gimplify.c (gimplify_expr): Take care that for bitwise-binary
896         transformation the operands have compatible types.
897
898 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
899
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.
911
912 2011-10-14  Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
913
914         * config/i386/i386.c (atom_cost): Changed cost for loading
915         QImode using movzbl.
916
917 2011-10-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
918
919         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
920         change on October 11th, 2011.
921
922 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
923
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.
928
929 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
930
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.
934
935 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
936
937         PR target/46278
938         * doc/invoke.texi (AVR Options): Document -mstrict-X.
939
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.
949
950 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
951
952         * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
953         of VI_128.
954
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.
958
959 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
960
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.
965
966 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
967
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
975         and LDREXD.
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.
1008
1009 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1010
1011         PR target/48126
1012         * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1013
1014 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1015
1016         * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1017
1018 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1019
1020         * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1021
1022 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1023
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.
1026
1027 2011-10-14  Richard Guenther  <rguenther@suse.de>
1028
1029         PR tree-optimization/50723
1030         * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1031
1032 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
1033
1034         * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1035         objc/objc-map.c.
1036
1037 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1038
1039         PR c++/17212
1040         * doc/invoke.texi ([Wformat-zero-length]): Update.
1041
1042 2011-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1043
1044         PR bootstrap/50699
1045         * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1046         build for powerpc targets.  (darwin_patch_builtins): Only build for
1047         powerpc targets.
1048
1049 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1050
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.
1058
1059 2011-10-13  David S. Miller  <davem@davemloft.net>
1060
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.
1066
1067 2011-10-13  Richard Henderson  <rth@redhat.com>
1068
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.
1077
1078 2011-10-13  Richard Henderson  <rth@redhat.com>
1079
1080         * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1081
1082         * config/rs6000/spu.md (vec_permv16qi): New pattern.
1083
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.
1088
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.
1094
1095         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1096         test for vector splat.
1097
1098 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1099
1100         * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1101
1102 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1103             Richard Guenther  <rguenther@suse.de>
1104
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.
1107
1108 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1109
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.
1116
1117 2011-10-13  Lawrence Crowl  <crowl@google.com>
1118             Diego Novillo  <dnovillo@google.com>
1119
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.
1124
1125 2011-10-13  Gabriel Charette  <gchare@google.com>
1126             Diego Novillo  <dnovillo@google.com>
1127
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.
1134
1135 2011-10-13  Eric Botcazou  <ebotcazou@adacore.com>
1136
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.
1141
1142 2011-10-13  Richard Guenther  <rguenther@suse.de>
1143
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.
1148
1149 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1150
1151         * function.c (gimplify_parameters): Set number of arguments of call to
1152         BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1153
1154 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1155
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.
1160
1161 2011-10-13  Richard Guenther  <rguenther@suse.de>
1162
1163         PR tree-optimization/50698
1164         * tree-data-ref.c (split_constant_offset_1): Also process
1165         offsets of &MEM.
1166
1167 2011-10-12  David S. Miller  <davem@davemloft.net>
1168
1169         * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1170         (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1171         unspecs.
1172         (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1173         of a vec_concat.
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.
1185
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.
1190
1191 2011-10-12  Jakub Jelinek  <jakub@redhat.com>
1192
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.
1198
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.
1202
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
1215         with TARGET_AVX2.
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
1223         4 new operands.
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.
1232
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.
1244
1245 2011-10-12  Kai Tietz  <ktietz@redhat.com>
1246
1247         * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1248
1249 2011-10-12  Steve Ellcey  <sje@cup.hp.com>
1250
1251         * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1252
1253 2011-10-12  Richard Guenther  <rguenther@suse.de>
1254
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
1259         that candidate.
1260
1261 2011-10-12  Paul Koning  <pkoning@gcc.gnu.org>
1262
1263         PR tree-optimization/50189
1264         * tree-vrp.c (extract_range_from_assert): Use the type of
1265         the variable, not the limit.
1266
1267 2011-10-12  Richard Guenther  <rguenther@suse.de>
1268
1269         PR tree-optimization/50700
1270         * tree-object-size.c (addr_object_size): Simplify and treat
1271         MEM_REF bases consistently.
1272
1273 2011-10-12  Bernd Schmidt  <bernds@codesourcery.com>
1274
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
1278         last block.
1279
1280 2011-10-12  Joseph Myers  <joseph@codesourcery.com>
1281
1282         PR c/50565
1283         * convert.c (convert_to_integer): Do not narrow operands of
1284         pointer subtraction.
1285
1286 2011-10-12  Nick Clifton  <nickc@redhat.com>
1287
1288         * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro.  Used to
1289         emit a .eabi_attribute assembler directive, possibly with a
1290         comment attached.
1291         * config/arm/arm.c (arm_file_start): Use the new macro.
1292         * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1293
1294 2011-10-12  Georg-Johann Lay  <avr@gjlay.de>
1295
1296         PR target/49939
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.
1302
1303 2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
1304
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.
1313
1314 2011-10-11  Eric Botcazou  <ebotcazou@adacore.com>
1315
1316         PR target/49965
1317         * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
1318         (mov<F:mode>cc): Likewise.
1319
1320 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1321
1322         * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
1323
1324 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
1325
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.
1449
1450 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1451
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.
1455
1456 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
1457
1458         * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
1459         prototype.
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.
1471
1472 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
1473
1474         PR target/50447
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
1480         CC_OUT_PLUS.
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.
1484
1485 2011-10-11  H.J. Lu  <hongjiu.lu@intel.com>
1486
1487         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
1488         the extra break.
1489
1490 2011-10-11  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1491
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
1495         vector operation.
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.
1500
1501 2011-10-11  Richard Guenther  <rguenther@suse.de>
1502
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
1507         of PHI args.
1508
1509 2011-10-11  Richard Sandiford  <richard.sandiford@linaro.org>
1510
1511         * modulo-sched.c: Fix comment typo.  Mention the possibility
1512         of using scheduling windows of II+1 cycles.
1513
1514 2011-10-11  Tristan Gingold  <gingold@adacore.com>
1515
1516         * doc/invoke.texi (C Dialect Options): Document
1517         -fallow-parameterless-variadic-functions.
1518         * c-parser.c (c_parser_parms_list_declarator): Handle it.
1519
1520 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1521
1522         * config/avr/avr.c (avr_option_override): Set
1523         flag_omit_frame_pointer to 0 if frame pointer is needed for unwinding.
1524
1525 2011-10-10  Uros Bizjak  <ubizjak@gmail.com>
1526
1527         PR bootstrap/50665
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.
1531
1532 2011-10-10  Anatoly Sokolov  <aesok@post.ru>
1533
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.
1537
1538 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1539
1540         * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
1541         !AVR_HAVE_JMP_CALL.
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.
1546
1547 2011-10-10  Richard Henderson  <rth@redhat.com>
1548
1549         * doc/md.texi (vec_perm_const): Fix typo in cindex.
1550
1551 2011-10-10  Kirill Yukhin  <kirill.yukhin@intel.com>
1552             Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
1553
1554         * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
1555
1556 2011-10-10  Richard Guenther  <rguenther@suse.de>
1557
1558         PR middle-end/50389
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.
1562
1563 2011-10-10  Richard Guenther  <rguenther@suse.de>
1564
1565         * ipa-split.c (pass_split_functions): Add verification TODOs.
1566         (pass_feedback_split_functions): Likewise.
1567
1568 2011-10-10  Richard Guenther  <rguenther@suse.de>
1569
1570         PR middle-end/50195
1571         * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
1572         only when optimizing.
1573
1574 2011-10-10  Nick Clifton  <nickc@redhat.com>
1575
1576         PR middle-end/49801
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.
1581
1582 2011-10-10  Michael Matz  <matz@suse.de>
1583
1584         PR middle-end/50638
1585         * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
1586
1587 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1588
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
1602         scheduled.
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.
1609
1610 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1611
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.
1640
1641 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1642
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
1652         asap values.
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.
1676         Use ps_rtl_insn.
1677         (ps_insn_advance_column): Adjust for above field changes.
1678         (add_node_to_ps): Remove node parameter.  Update call to
1679         create_ps_insn.
1680         (ps_has_conflicts): Use ps_rtl_insn.
1681         (ps_add_node_check_conflicts): Replace node parameter than an id.
1682
1683 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1684
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.
1690
1691 2011-10-10  Matthias Klose <doko@ubuntu.com>
1692
1693         * common/config/m32c: Remove empty directory.
1694
1695 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1696
1697         * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
1698
1699 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1700
1701         PR target/50652
1702         * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
1703         atmega164a to 0x100.
1704
1705 2011-10-09  Eric Botcazou  <ebotcazou@adacore.com>
1706
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.
1709
1710 2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
1711
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
1715         pattern statements.
1716         (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
1717
1718 2011-10-09  Anatoly Sokolov  <aesok@post.ru>
1719
1720         * system.h: Commit forgotten hunk in previous patch.
1721         (OUTPUT_ADDR_CONST_EXTRA): Poison.
1722
1723 2011-10-08  Nicola Pero  <nicola.pero@meta-innovation.com>
1724
1725         PR libobjc/50428
1726         * doc/objc.texi (Garbage Collection): Updated example to protect
1727         +initialize against execution in subclasses.
1728
1729 2011-10-07  Richard Henderson  <rth@redhat.com>
1730
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.
1734
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.
1747
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>.
1753
1754 2011-10-07  Richard Henderson  <rth@redhat.com>
1755
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.
1759
1760 2011-10-07  Richard Henderson  <rth@redhat.com>
1761
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.
1770
1771 2011-10-07  David S. Miller  <davem@davemloft.net>
1772
1773         PR 50655
1774         * configure.ac: Add .register directives to VIS3 test.
1775         * configure: Regenerate.
1776
1777 2011-10-07  Richard Henderson  <rth@redhat.com>
1778
1779         * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
1780
1781 2011-10-07  Richard Henderson  <rth@redhat.com>
1782
1783         PR 49752
1784         * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
1785
1786 2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
1787
1788         * config/arm/predicates.md (shift_amount_operand): Remove constant
1789         range check.
1790         (shift_operator): Check range of constants for all shift operators.
1791
1792 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1793
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.
1798
1799 2011-10-07  Tom de Vries  <tom@codesourcery.com>
1800
1801         PR middle-end/50527
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
1804         throw.
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
1818         DEF_BUILTIN_STUB.
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.
1833
1834 2011-10-07  Bernd Schmidt  <bernds@codesourcery.com>
1835
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.
1844
1845 2011-10-07  Jakub Jelinek  <jakub@redhat.com>
1846
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.
1854
1855 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1856
1857         * config/s390/s390.md (DWH, dwh): New mode macros.
1858         ("umulsidi3"): Extend to support "umulditi3" as well.
1859
1860 2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
1861             H.J. Lu  <hongjiu.lu@intel.com>
1862
1863         PR target/50603
1864         * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
1865         integer PLUS RTX to a register to improve address combine.
1866
1867 2011-10-06  Richard Henderson  <rth@redhat.com>
1868
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.
1873
1874 2011-10-06  Anatoly Sokolov  <aesok@post.ru>
1875
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.
1885
1886 2011-10-06  David S. Miller  <davem@davemloft.net>
1887
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.
1897
1898 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1899
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.
1902
1903 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1904
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
1909         function.
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.
1917
1918 2001-10-06  Richard Henderson  <rth@redhat.com>
1919
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.
1926
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.
1932
1933 2001-10-06  Richard Henderson  <rth@redhat.com>
1934
1935         * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
1936         mask operand.  Tidy the code.
1937
1938 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1939
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.
1944
1945         PR tree-optimization/49279
1946         * tree-ssa-structalias.c (find_func_aliases): Don't handle
1947         CAST_RESTRICT.
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.
1952
1953 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1954
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.
1958
1959 2011-10-06  Michael Matz  <matz@suse.de>
1960
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
1975         add_referenced_var.
1976
1977 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1978
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):
1984         Likewise.
1985
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.
1990
1991 2011-10-06  Richard Guenther  <rguenther@suse.de>
1992
1993         * tree-vect-generic.c (vector_element): Look at previous
1994         generated results.
1995
1996 2011-10-06  David Edelsohn  <dje.gcc@gmail.com>
1997
1998         PR target/39950
1999         * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2000         __powerpc__, __PPC__, __unix__.
2001
2002 2011-10-06  Michael Matz  <matz@suse.de>
2003
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.
2019
2020         * doc/invoke.texi (ix86 Options): Document the new option.
2021
2022 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2023
2024         PR target/49049
2025         * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2026
2027 2011-10-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
2028
2029         PR target/50305
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.
2034
2035 2011-10-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2036
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.
2040
2041 2011-10-06  Richard Guenther  <rguenther@suse.de>
2042
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.
2048
2049 2011-10-06  Nick Clifton  <nickc@redhat.com>
2050
2051         * config/rx/rx.md (smin3): Revert previous delta.
2052
2053 2011-10-06  Richard Guenther  <rguenther@suse.de>
2054
2055         PR tree-optimization/38884
2056         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2057         reads from aggregate SSA names.
2058
2059 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2060
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.
2066
2067 2011-10-05  David S. Miller  <davem@davemloft.net>
2068
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.
2079
2080 2011-10-06  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2081
2082         PR middle-end/50607
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.
2088
2089 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2090
2091         * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2092         if profiling after the prologue.
2093
2094 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2095
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.
2100
2101 2011-10-05  Richard Henderson  <rth@redhat.com>
2102
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.
2108
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.
2114
2115 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2116
2117         * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2118         of "found".  Simplify return value calculation.
2119         (distance_agu_use): Ditto.
2120
2121 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2122
2123         PR bootstrap/50621
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
2127         to an insn.
2128         * function.c (thread_prologue_and_epilogue_insns): Make sure the
2129         shrink_wrapped flag is set even if there is no dump file.
2130
2131 2011-10-05  DJ Delorie  <dj@redhat.com>
2132             Nick Clifton  <nickc@redhat.com>
2133
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
2142         base register.
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.
2159         (Rpda): Define.
2160         * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2161         (tablejump): Add PID support.
2162         (mov<>): Likewise.
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.
2172
2173 2011-10-05  Richard Guenther  <rguenther@suse.de>
2174
2175         PR tree-optimization/38885
2176         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2177         from constants.
2178
2179 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2180
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
2196         simple_return.
2197         * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2198         simple returns.
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.
2203
2204 2011-10-05  Richard Guenther  <rguenther@suse.de>
2205
2206         * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2207         vector type.
2208         (simplify_unary_expression): Handle BIT_FIELD_REFs.
2209         (try_to_simplify): Handle BIT_FIELD_REFs.
2210
2211 2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
2212
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.
2219
2220 2011-10-05  Richard Guenther  <rguenther@suse.de>
2221
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.
2226
2227 2011-10-05  Nick Clifton  <nickc@redhat.com>
2228
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.
2234
2235 2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2236
2237         * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2238         with the new widening_optab_handler.
2239
2240 2011-10-05  Richard Guenther  <rguenther@suse.de>
2241
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.
2247
2248 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2249
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
2252         instructions.
2253         (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2254
2255 2011-10-04  David S. Miller  <davem@davemloft.net>
2256
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
2266         builtins patterns.
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.
2274
2275 2011-10-04  Richard Henderson  <rth@redhat.com>
2276
2277         * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2278         Avoid save_expr unless two_arguments.
2279
2280 2011-10-04  Ozkan Sezer  <sezeroz@gmail.com>
2281
2282         * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2283         * config/i386/mingw32.h (CPP_SPEC): Likewise.
2284
2285 2011-10-04  David S. Miller  <davem@davemloft.net>
2286
2287         * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2288         under Linux.
2289
2290 2011-10-04  Jakub Jelinek  <jakub@redhat.com>
2291
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.
2298
2299         PR tree-optimization/50522
2300         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2301         TYPE_RESTRICT.
2302         (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
2303         unconditionally.
2304
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.
2310
2311 2011-10-04  Joseph Myers  <joseph@codesourcery.com>
2312
2313         * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
2314
2315 2011-10-04  Jan Hubicka  <jh@suse.cz>
2316
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.
2327
2328 2011-10-04  Georg-Johann Lay  <avr@gjlay.de>
2329
2330         PR target/50566
2331         * config/avr/avr-protos.h (avr_legitimize_reload_address): New
2332         prototype.
2333         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
2334         from here...
2335         * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
2336         function.  Log if avr_log.legitimize_reload_address.
2337
2338 2011-10-04  Eric Botcazou  <ebotcazou@adacore.com>
2339
2340         * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
2341
2342 2011-10-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2343
2344         * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
2345         variables.  Fix second operand of DR.  Swap inputs for sdiv_qrnnd.
2346
2347 2011-10-03  David S. Miller  <davem@davemloft.net>
2348
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
2354         zero_extract.
2355         (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
2356
2357 2011-10-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
2358
2359         * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
2360
2361 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
2362             Ian Lance Taylor  <iant@google.com>
2363
2364         * godump.c (go_output_typedef): Support printing enum values that
2365         don't fit in a signed HOST_WIDE_INT.
2366
2367 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
2368
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.
2373
2374 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
2375
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.
2380
2381 2011-10-03  Steve Ellcey  <sje@cup.hp.com>
2382
2383         PR target/49967
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.
2388
2389 2011-10-03  David S. Miller  <davem@davemloft.net>
2390
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.
2395
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.
2398
2399 2011-10-03  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2400
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.
2439
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.
2446
2447 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
2448
2449         PR tree-optimization/50587
2450         * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
2451         arg0 is not a SSA_NAME.
2452
2453 2011-10-03  Richard Sandiford  <rdsandiford@googlemail.com>
2454
2455         * ipa-inline-analysis.c (MAX_TIME): Update comment.
2456
2457 2011-10-02  Richard Henderson  <rth@redhat.com>
2458             David S. Miller  <davem@davemloft.net>
2459
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.
2465
2466 2011-10-02  Gerald Pfeifer  <gerald@pfeifer.com>
2467
2468         * invoke.texi (SPARC Options): Refer to GNU/Linux.
2469
2470 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
2471
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.
2477
2478 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
2479
2480         PR target/49696
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.
2484
2485 2011-10-02  Jan Hubicka  <jh@suse.cz>
2486
2487         * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
2488
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.
2494
2495 2011-10-02  Jan Hubicka  <jh@suse.cz>
2496
2497         * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
2498
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.
2505
2506 2011-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
2507
2508         PR preprocessor/36819
2509         * incpath.c (merge_include_chains): Call free_path on
2510         heads[QUOTE] and tails[QUOTE].
2511
2512 2011-10-02  Jan Hubicka  <jh@suse.cz>
2513
2514         PR lto/47247
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
2522         externally visible.
2523         * varasm.c (resolution_to_local_definition_p): Add
2524         LDPR_PREVAILING_DEF_IRONLY_EXP.
2525         (resolution_local_p): Likewise.
2526
2527 2011-10-01  David S. Miller  <davem@davemloft.net>
2528
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
2552         is ignored.
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.
2562
2563 2011-10-01  Eric Botcazou  <ebotcazou@adacore.com>
2564
2565         * ira-color.c (assign_hard_reg): Fix typo.
2566
2567 2011-09-30  H.J. Lu  <hongjiu.lu@intel.com>
2568
2569         * doc/extend.texi: Add missing ','.
2570
2571 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2572
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.
2592
2593 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
2594
2595         PR target/50566
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.
2600
2601 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
2602
2603         PR inline-asm/50571
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.
2607
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.
2619
2620 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
2621             Richard Guenther  <rguenther@suse.de>
2622
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.
2629
2630 2011-09-30  Jan Beulich  <jbeulich@suse.com>
2631
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
2646         being NULL.
2647         (streamer_write_tree_header): Adjust call to renamed function.
2648
2649 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2650
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.
2658         Record it.
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
2674         declarations.
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.
2678
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
2685         schedule_ebb.
2686         * sched-int.h (schedule_ebb, schedule_ebbs_init,
2687         schedule_ebbs_finish): Declare.
2688
2689 2011-09-30  Richard Guenther  <rguenther@suse.de>
2690
2691         PR middle-end/50574
2692         * tree-cfg.c (verify_gimple_comparison): Compare component
2693         mode sizes for vector comparisons.
2694
2695 2011-09-30  Revital Eres  <revital.eres@linaro.org>
2696
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.
2703
2704 2011-09-30  Revital Eres  <revital.eres@linaro.org>
2705
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.
2709
2710 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2711
2712         * hw-doloop.c (scan_loop): Compute register usage only for non-debug
2713         insns.
2714
2715 2011-09-30  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
2716
2717         PR target/50099
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.
2723
2724 2011-09-30  David S. Miller  <davem@davemloft.net>
2725
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
2735         patterns.
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
2747         void.
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.
2754
2755 2011-09-29  Nick Clifton  <nickc@redhat.com>
2756             Bernd Schmidt  <bernds@codesourcery.com>
2757
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.
2762
2763 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2764
2765         PR target/50566
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
2768         from avr_rtx_costs.
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.
2775
2776 2011-09-29  Richard Sandiford  <richard.sandiford@linaro.org>
2777
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.
2782
2783 2011-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2784
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.
2789
2790 2011-09-27   Andi Kleen <ak@linux.intel.com>
2791
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.
2795
2796 2011-09-26   Andi Kleen <ak@linux.intel.com>
2797
2798         * toplev.c (init_local_tick): Try reading random seed
2799         from /dev/urandom.
2800
2801 2011-09-26   Andi Kleen <ak@linux.intel.com>
2802
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.
2815
2816 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2817
2818         PR target/50566
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.
2830
2831 2011-09-29  Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2832
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.
2843
2844 2011-09-29  Richard Guenther  <rguenther@suse.de>
2845
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.
2849
2850 2011-09-29  David S. Miller  <davem@davemloft.net>
2851
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
2861         array builtins.
2862         * config/sparc/visintrin.h (__vis_array8, __vis_array16,
2863         __vis_array32): New.
2864         * doc/extend.texi: Document new VIS builtins.
2865
2866         * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
2867         (VIS pixel-compare insn): Just use <gcond:name>.
2868
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>.
2872
2873 2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>
2874
2875         * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
2876         Darwin >= 9.
2877
2878 2011-09-28  David S. Miller  <davem@davemloft.net>
2879
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.
2888
2889 2011-09-28  Oleg Endo  <oleg.endo@t-online.de>
2890
2891         PR target/49486
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.
2898
2899 2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
2900
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.
2904
2905 2011-09-28  Nick Clifton  <nickc@redhat.com>
2906
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.
2913
2914 2011-09-28  Richard Guenther  <rguenther@suse.de>
2915
2916         PR middle-end/50460
2917         * fold-const.c (try_move_mult_to_index): Handle &a.array the
2918         same as &a.array[0].
2919
2920 2011-09-28  Kai Tietz  <ktietz@redhat.com>
2921
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.
2929
2930 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2931
2932         * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
2933         throughout file.
2934
2935 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2936
2937         * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
2938         throughout file.
2939
2940 2011-09-27  Sriraman Tallam  <tmsriram@google.com>
2941
2942         * output.h (SECTION_EXCLUDE): New macro.
2943         * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
2944
2945 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2946
2947         * fwprop.c (forward_propagate_and_simplify): After checking
2948         reg/subreg combinations, check whether the modes are the same.
2949
2950 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
2951             Richard Sandiford  <rdsandiford@googlemail.com>
2952
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.
2957
2958 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2959
2960         PR middle-end/50386
2961         PR middle-end/50326
2962         * tree-sra.c (build_ref_for_model): Use the type of the field as
2963         the type of the COMPONENT_REF.
2964
2965 2011-09-27  Jeff Law  <law@redhat.com>
2966
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.
2972
2973 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
2974
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].
2988
2989 2011-09-27  Tom de Vries  <tom@codesourcery.com>
2990
2991         PR middle-end/43864
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.
3040
3041 2011-09-27  Jan Hubicka  <jh@suse.cz>
3042
3043         * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
3044
3045 2011-09-27  Jan Hubicka  <jh@suse.cz>
3046
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.
3050
3051 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
3052
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
3056         declaration.
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.
3060
3061 2011-09-27  Andi Kleen  <ak@linux.intel.com>
3062             Jan Hubicka  <jh@suse.cz>
3063
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.
3072
3073 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
3074
3075         * ipa-inline-analysis.c (predicate_probability): Avoid comparison
3076         between signed and unsigned.
3077
3078 2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
3079
3080         * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
3081         vectorization.
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
3088         vectorization.
3089         (vect_analyze_slp_instance): Allow multiple types for basic block
3090         vectorization.  Recheck unrolling factor after construction of SLP
3091         instance.
3092
3093 2011-09-27  Richard Guenther  <rguenther@suse.de>
3094
3095         * tree-object-size.c (compute_object_sizes): Fix dumping of
3096         folded statement.
3097
3098 2011-09-27  Richard Guenther  <rguenther@suse.de>
3099
3100         PR tree-optimization/50363
3101         * tree-ssa-pre.c (create_expression_by_pieces): Handle
3102         pointer conversions in POINTER_PLUS_EXPRs properly.
3103
3104 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
3105
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.
3111
3112 2011-09-27  Georg-Johann Lay  <avr@gjlay.de>
3113
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
3118         by digging RTX.
3119
3120 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
3121
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
3128         CONSTM1_RTX.
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
3134         into mask | x.
3135
3136 2011-09-26  David S. Miller  <davem@davemloft.net>
3137
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
3147         and pixel-compare.
3148
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.
3153
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.
3161
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.
3168
3169 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3170
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,
3174         non-ld-regs target.
3175
3176 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
3177
3178         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
3179         gctx.into_ssa after push_gimplify_context.
3180
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.
3187
3188 2011-09-26  Richard Guenther  <rguenther@suse.de>
3189
3190         PR tree-optimization/50472
3191         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
3192         volatile references.
3193
3194 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
3195
3196         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
3197         * target.def: (addr_space_subset_p): Likewise.
3198
3199 2011-09-26  Tom de Vries  <tom@codesourcery.com>
3200
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
3204         of new var.
3205
3206 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3207
3208         PR target/50465
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.
3224
3225 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
3226
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.
3229
3230 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3231
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
3235         prototype.
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
3242         created on the fly.
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.
3246
3247 2011-09-25  David S. Miller  <davem@davemloft.net>
3248
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.
3262
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
3276         disabled.
3277         (sparc_rtx_costs): Handle 'FMA'.
3278         * doc/invoke.texi: Document -mfmaf.
3279
3280 2011-09-25  Jakub Jelinek  <jakub@redhat.com>
3281
3282         * tree-ssa-structalias.c (intra_create_variable_infos): Treat
3283         TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
3284         DECL_BY_REFERENCE parameters.
3285
3286 2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>
3287
3288         * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
3289         if there is no outgoing edge.
3290
3291         * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
3292         integral types.
3293
3294 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
3295
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.
3299
3300 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
3301
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.
3309
3310 2011-09-24  David S. Miller  <davem@davemloft.net>
3311
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
3336         end of table.
3337         (sparc_option_override): Make -mvis imply -mv8plus.
3338         (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
3339         for %gsr.
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
3343         return void.
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.
3347
3348 2011-09-23  Jan Hubicka  <jh@suse.cz>
3349
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.
3383
3384 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
3385
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.
3397
3398 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
3399
3400         PR target/50447
3401         * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
3402         "tstsi", "compare".
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
3406         prototypes.
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,
3417         ADJUST_LEN_COMPARE.
3418
3419 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
3420
3421         PR target/50447
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.
3434
3435 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
3436
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.
3439
3440 2011-09-23  Ian Lance Taylor  <iant@google.com>
3441
3442         * godump.c (go_define): Treat a single character in single quotes,
3443         or a string, as an operand.
3444
3445 2011-09-23  Martin Jambor  <mjambor@suse.cz>
3446
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.
3460
3461 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
3462
3463         PR target/50446
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.
3471
3472 2011-09-23  Bin Cheng  <bin.cheng@arm.com>
3473
3474         * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
3475
3476 2011-09-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
3477
3478         * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
3479
3480 2011-09-22  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3481
3482         * reload.c (find_reloads): Set operand_mode to Pmode for address
3483         operands consisting of just a CONST_INT.
3484
3485 2011-09-22  Uros Bizjak  <ubizjak@gmail.com>
3486
3487         PR target/50482
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.
3491
3492 2011-09-22  Richard Sandiford  <rdsandiford@googlemail.com>
3493
3494         PR middle-end/50113
3495         PR middle-end/50061
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.
3500
3501 2011-09-22  Jan Hubicka  <jh@suse.cz>
3502
3503         * ipa-inline-analysis.c: Fix overly long lines.
3504
3505 2011-09-22  Jan Hubicka  <jh@suse.cz>
3506
3507         * ipa-inline-transform.c (inline_call): Always update jump functions
3508         after inlining.
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
3518         is not doing that.
3519         (inline_read_summary): Always read jump functions when ipa-cp
3520         is not doing that.
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.
3532
3533 2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
3534
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.
3541
3542 2011-09-22  Georg-Johann Lay  <avr@gjlay.de>
3543
3544         PR target/50447
3545         PR target/50465
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
3556         alternative.
3557         (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
3558         (andsi3, iorsi3, xorsi3): Ditto.
3559         (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
3560
3561 2011-09-22  Ira Rosen  <ira.rosen@linaro.org>
3562
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
3567         operand.
3568
3569 2011-09-22  David S. Miller  <davem@davemloft.net>
3570
3571         * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
3572         fpack16, fpack32, fpackfix as const.
3573
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.
3577
3578 2011-09-22  Oleg Endo  <oleg.endo@t-online.de>
3579
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.
3583
3584 2011-09-21  Jan Hubicka  <jh@suse.cz>
3585
3586         * ipa-inline-analsis.c (compute_inline_parameters): Set
3587         cfun and current_function_decl.
3588
3589 2011-09-21  Jan Hubicka  <jh@suse.cz>
3590
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.
3594
3595 2011-09-21  Jan Hubicka  <jh@suse.cz>
3596
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.
3600
3601 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
3602
3603         * config/i386/i386.c (ix86_expand_sse_movcc): Use
3604         blendvps, blendvpd and pblendvb if possible.
3605
3606 2011-09-21  Uros Bizjak  <ubizjak@gmail.com>
3607
3608         PR target/50464
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.
3615
3616 2011-09-21  Kirill Yukhin  <kirill.yukhin@intel.com>
3617
3618         * config/i386/bmi2intrin.h (_mulx_u64): New.
3619         (_mulx_u32): Ditto.
3620
3621 2011-09-21  Jan Hubicka  <jh@suse.cz>
3622
3623         PR tree-optimization/50433
3624         * ipa-inline-analysis.c (eliminated_by_inlining_prob):
3625         Use get_base_address.
3626
3627 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
3628
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.
3634
3635 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
3636
3637         PR target/45099
3638         * config/avr/avr.c (avr_function_arg_advance): Change error to
3639         warning if a fixed register is needed as function argument.
3640
3641 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
3642
3643         PR target/50449
3644         PR target/50465
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.
3654
3655 2011-09-21  David S. Miller  <davem@davemloft.net>
3656
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.
3661
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.
3672
3673 2011-09-21  Tom de Vries  <tom@codesourcery.com>
3674
3675         * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
3676
3677 2011-09-20  David S. Miller  <davem@davemloft.net>
3678
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.
3687
3688 2011-09-20  Terry Guo  <terry.guo@arm.com>
3689
3690         * config/arm/arm-arches.def: Add armv6s-m.
3691         * config/arm/arm-tables.opt: Regenerate.
3692
3693 2011-09-20  Wei Guozhi  <carrot@google.com>
3694
3695         PR rtl-optimization/49452
3696         * postreload.c (reload_combine): Invalidate use information when across
3697         volatile insn.
3698
3699 2011-09-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
3700
3701         * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
3702         Remove maintenance overhead.
3703         (haifa_sched_init, sched_finish): Update.
3704
3705 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
3706
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.
3716
3717 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
3718
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
3722         code iterator.
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.
3729
3730 2011-09-19  Alan Modra  <amodra@gmail.com>
3731             Michael Meissner  <meissner@linux.vnet.ibm.com>
3732
3733         PR target/50341
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.
3745
3746 2011-09-19  Jakub Jelinek  <jakub@redhat.com>
3747
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.
3751
3752 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
3753
3754         * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
3755
3756 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
3757
3758         * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
3759
3760 2011-09-19  Ira Rosen  <ira.rosen@linaro.org>
3761
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.
3765
3766 2011-09-19  Paul Brook  <paul@codesourcery.com>
3767
3768         * config/arm/predicates.md (shift_amount_operand): Check constant
3769         shift count is in range.
3770         (const_shift_operand): Remove.
3771
3772 2011-09-18  Eric Botcazou  <ebotcazou@adacore.com>
3773             Iain Sandoe  <developer@sandoe-acoustics.co.uk>
3774
3775         PR target/50091
3776         * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
3777         * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
3778
3779 2011-09-18  H.J. Lu  <hongjiu.lu@intel.com>
3780
3781         * config/i386/bmiintrin.h: Remove tmp.
3782         * config/i386/tbmintrin.h: Likewise.
3783
3784 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
3785
3786         PR tree-optimization/50414
3787         * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
3788         MIN_EXPR.
3789
3790 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
3791
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.
3795
3796 2011-09-17  David S. Miller  <davem@davemloft.net>
3797
3798         * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
3799         UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
3800         New unspecs.
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
3812         intrinsics.
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.
3818
3819         * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
3820         divide costs.
3821         (niagara3_costs): New.
3822         (sparc_option_override): Use it.
3823         * gcc/config/sparc/niagara2.md: Adjust with more accurate
3824         Niagara-3 reservations.
3825
3826 2011-09-17  Jakub Jelinek  <jakub@redhat.com>
3827
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.
3841
3842         * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
3843         and V4DImode.
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>):
3858         New expanders.
3859
3860 2011-09-17  Richard Sandiford  <rdsandiford@googlemail.com>
3861
3862         * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
3863         throughout file.
3864
3865 2011-09-16  David S. Miller  <davem@davemloft.net>
3866
3867         * config/sparc/visintrin.h: New file.
3868         * config.gcc: Add it to extra_headers on sparc.
3869
3870 2011-09-16  Jakub Jelinek  <jakub@redhat.com>
3871
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):
3877         New expanders.
3878
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.
3889
3890 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
3891
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.
3897
3898 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
3899
3900         PR target/50358
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.
3908
3909 2011-09-15   Jan Hubicka  <jh@suse.cz>
3910
3911         PR lto/50430
3912         * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
3913         error_mark_node in the DECL_INITIAL of vtable.
3914
3915 2011-09-15   Diego Novillo  <dnovillo@google.com>
3916
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.
3923
3924 2011-09-15  Uros Bizjak  <ubizjak@gmail.com>
3925
3926         * config/i386/i386.c (output_fp_compare): Return %v prefixed
3927         instruction mnemonics for TARGET_AVX.
3928
3929         * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
3930         "type" attribute calculation.
3931         (*movdf_internal): Ditto.
3932         (*movsf_internal): Ditto.
3933
3934 2011-09-15  James Greenhalgh  <james.greenhalgh@arm.com>
3935
3936         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
3937
3938 2011-09-15  Jason Merrill  <jason@redhat.com>
3939
3940         PR c++/50361
3941         * expr.c (count_type_elements): Handle NULLPTR_TYPE.
3942
3943 2011-09-15  Jan Hubicka  <jh@suse.cz>
3944
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.
3956
3957 2011-09-15  Ira Rosen  <ira.rosen@linaro.org>
3958
3959         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
3960         read-after-read dependencies in basic block SLP.
3961
3962 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3963
3964         * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref
3965       &nbs