OSDN Git Service

PR target/47989
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-10-20  Uros Bizjak  <ubizjak@gmail.com>
2
3         PR target/47989
4         * config/i386/i386.h (RECIP_MASK_DEFAULT): New define.
5         * config/i386/i386.op (recip_mask): Initialize with RECIP_MASK_DEFAULT.
6         * doc/invoke.texi (ix86 Options, -mrecip): Document that GCC
7         implements vectorized single float division and vectorized sqrtf(x)
8         with reciprocal sequence with additional Newton-Raphson step with
9         -ffast-math.
10
11 2011-10-20  Dodji Seketeli  <dodji@redhat.com>
12
13         PR other/50659
14         * doc/cppopts.texi: Use @smallexample/@end smallexample in
15         documentation for -fdebug-cpp instead of @quotation/@end quotation
16         that is not supported by contrib/texi2pod.pl.
17
18 2011-10-19  Jan Hubicka  <jh@suse.cz>
19
20         * ipa-inline.c (inline_small_functions): Always update all calles after
21         inlining.
22
23 2011-10-19  Jan Hubicka  <jh@suse.cz>
24
25         PR bootstrap/50709
26         * ipa-inline.c (inline_small_functions): Fix checking code to not make
27         effect on fibheap stability.
28
29 2011-10-20  Maxim Kuvyrkov  <maxim@codesourcery.com>
30
31         * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
32
33 2011-10-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
34
35        PR target/50106
36        * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
37         reg size from 1-3.
38
39 2011-10-20  Richard Guenther  <rguenther@suse.de>
40
41         * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
42         and rotates to the set of expensive operations.
43
44 2011-10-19  David S. Miller  <davem@davemloft.net>
45
46         * config/sparc/sparc.c (sparc_expand_move): Use can_create_pseudo_p.
47         (sparc_emit_set_const32): Likewise.
48         (sparc_emit_set_const64_longway): Likewise.
49         (sparc_emit_set_const64): Likewise.
50         (sparc_legitimize_pic_address): Likewise.
51         (memory_ok_for_ldd): Likewise.
52
53 2011-10-20  Dehao Chen  <dehao@google.com>
54
55         * profile.c (compute_branch_probabilities): Compute and dump the
56         overlap between the static estimation and the instrumentation profile.
57         (OVERLAP_BASE): New macro.
58         (compute_frequency_overlap): New function
59
60 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
61
62         * config/i386/i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use
63         d->op1 instead of d->op0 for the second vpshufb.
64         (expand_vec_perm_even_odd_1): For V8SImode fix vpshufd immediates.
65         (ix86_expand_vec_perm_const): If mask indicates two operands are
66         needed, but both are the same and expanding them as d.op0 == d.op1
67         failed, retry with d.op0 != d.op1.
68         (ix86_expand_vec_perm_builtin): Likewise.  Handle sorry printing
69         also for d.nelt == 32.
70
71         PR middle-end/50754
72         * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
73         VEC_PERM_EXPR.
74
75 2011-10-19  Bernd Schmidt  <bernds@codesourcery.com>
76
77         * regrename.h: New file.
78         * regrename.c: Include it.  Also include "emit-rtl.h".
79         (struct du_head, struct du_chain, du_head_p DEF_VEC and
80         DEF_VEC_ALLOC_P): Move to regrename.h.
81         (do_replace): Remove declaration.
82         (insn_rr): New variable.
83         (cur_operand): New static variable.
84         (regrename_chain_from_id): Renamed from chain_from_id and no longer
85         static.  All callers changed.
86         (record_operand_use): New static function.
87         (scan_rtx_reg): Use it.
88         (find_best_rename_reg): New function, broken out of rename_chains.
89         (rename_chains): Use it.  Don't update chain regno and nregs here, ...
90         (regrename_do_replace): ... do it here instead.  Renamed from
91         do_replace, and no longer static.  All callers changed.
92         (regrename_analyze): No longer static.  New arg bb_mask.
93         All callers changed.  If bb_mask is nonzero, use it to limit the
94         number of basic blocks we analyze.  If we failed to analyze a block,
95         clear insn operand data.
96         (record_out_operands): New arg insn_info.  Update cur_operand if it is
97         nonnull.
98         (build_def_use): If insn_rr is nonnull, pass an insn_info to
99         record_out_operands, and update cur_operand here as well.
100         (regrename_init, regrename_finish): New functions.
101         (regrename_optimize): Use them.
102         * Makefile.in (regrename.o): Adjust dependencies.
103
104 2011-10-19  Tom de Vries  <tom@codesourcery.com>
105
106         PR tree-optimization/50769
107         * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
108         unconditionally.  Handle case that phi_vuse2 is not an SSA_NAME.  Add
109         dummy argument .MEM to phi when increasing number of arguments of phi by
110         redirecting edges to the block with phi.
111
112 2011-10-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
113
114         PR bootstrap/50777
115         * configure.ac: Save and restore CXXFLAGS around
116         gcc_AC_CHECK_DECLS uses.
117         Check for madvise() declaration with g++ if --enable-build-with-cxx.
118         * configure: Regenerate.
119         * config.in: Regenerate.
120         * ggc-page.c (USING_MADVISE): Also check HAVE_DECL_MADVISE.
121
122 2011-10-19  Alexandre Oliva  <aoliva@redhat.com>
123
124         PR debug/49310
125         * var-tracking.c (loc_exp_dep, onepart_aux): New structs.
126         (variable_part): Replace offset with union.
127         (enum onepart_enum, onepart_enum_t): New.
128         (variable_def): Drop cur_loc_changed, add onepart.
129         (value_chain_def, const_value_chain): Remove.
130         (VAR_PART_OFFSET, VAR_LOC_1PAUX): New macros, with checking.
131         (VAR_LOC_DEP_LST, VAR_LOC_DEP_LSTP): New macros.
132         (VAR_LOC_FROM, VAR_LOC_DEPTH, VAR_LOC_DEP_VEC): Likewise.
133         (value_chain_pool, value_chains): Remove.
134         (dropped_values): New.
135         (struct parm_reg): Only if HAVE_window_save.
136         (vt_stack_adjustments): Don't record register arguments.
137         (dv_as_rtx): New.
138         (dv_onepart_p): Return a onepart_enum_t.
139         (onepart_pool): New.
140         (dv_pool): Remove.
141         (dv_from_rtx): New.
142         (variable_htab_free): Release onepart aux data.  Reset flags.
143         (value_chain_htab_hash, value_chain_htab_eq): Remove.
144         (unshare_variable): Use onepart field.  Propagate onepart aux
145         data or offset.  Drop cur_loc_changed.
146         (val_store): Cope with NULL insn.  Rephrase dump output.  Check
147         for unsuitable locs.  Add FIXME on using cselib locs.
148         (val_reset): Remove FIXME of unfounded concerns.
149         (val_resolve): Check for unsuitable locs.  Add FIXME on using
150         cselib locs.
151         (variable_union): Use onepart field, adjust access to offset.
152         (NO_LOC_P): New.
153         (VALUE_CHANGED, DECL_CHANGED): Update doc.
154         (set_dv_changed): Clear NO_LOC_P when changed.
155         (find_loc_in_1pdv): Use onepart field.
156         (intersect_loc_chains): Likewise.
157         (unsuitable_loc): New.
158         (loc_cmp): Keep ENTRY_VALUEs at the end of the loc list.
159         (add_value_chain, add_value_chains): Remove.
160         (add_cselib_value_chains, remove_value_chain): Likewise.
161         (remove_value_chains, remove_cselib_value_chains): Likewise.
162         (canonicalize_loc_order_check): Use onepart.  Drop cur_loc_changed.
163         (canonicalize_values_star, canonicalize_vars_star): Use onepart.
164         (variable_merge_over_cur): Likewise.  Adjust access to offset.
165         Drop cur_loc_changed.
166         (variable_merge_over_src): Use onepart field.
167         (remove_duplicate_values): Likewise.
168         (variable_post_merge_new_vals): Likewise.
169         (find_mem_expr_in_1pdv): Likewise.
170         (dataflow_set_preserve_mem_locs): Likewise.  Drop cur_loc_changed
171         and value chains.
172         (dataflow_set_remove_mem_locs): Likewise.  Use VAR_LOC_FROM.
173         (variable_different_p): Use onepart field.  Move onepart test out
174         of the loop.
175         (argument_reg_set): Drop.
176         (add_uses, add_stores): Preserve but do not record in dynamic
177         tables equivalences for ENTRY_VALUEs and CFA_based addresses.
178         Avoid unsuitable address expressions.
179         (EXPR_DEPTH): Unlimit.
180         (EXPR_USE_DEPTH): Repurpose PARAM_MAX_VARTRACK_EXPR_DEPTH.
181         (prepare_call_arguments): Use DECL_RTL_IF_SET.
182         (dump_var): Adjust access to offset.
183         (variable_from_dropped, recover_dropped_1paux): New.
184         (variable_was_changed): Drop cur_loc_changed.  Use onepart.
185         Preserve onepart aux in empty_var.  Recover empty_var and onepart
186         aux from dropped_values.
187         (find_variable_location_part): Special-case onepart.  Adjust
188         access to offset.
189         (set_slot_part): Use onepart.  Drop cur_loc_changed.  Adjust
190         access to offset.  Initialize onepaux.  Drop value chains.
191         (delete_slot_part): Drop value chains.  Use VAR_LOC_FROM.
192         (VEC (variable, heap), VEC (rtx, stack)): Define.
193         (expand_loc_callback_data): Drop dummy, cur_loc_changed,
194         ignore_cur_loc.  Add expanding, pending, depth.
195         (loc_exp_dep_alloc, loc_exp_dep_clear): New.
196         (loc_exp_dep_insert, loc_exp_dep_set): New.
197         (notify_dependents_of_resolved_value): New.
198         (update_depth, vt_expand_var_loc_chain): New.
199         (vt_expand_loc_callback): Revamped.
200         (resolve_expansions_pending_recursion): New.
201         (INIT_ELCD, FINI_ELCD): New.
202         (vt_expand_loc): Use the new macros above.  Drop ignore_cur_loc
203         parameter, adjust all callers.
204         (vt_expand_loc_dummy): Drop.
205         (vt_expand_1pvar): New.
206         (emit_note_insn_var_location): Operate on non-debug decls only.
207         Revamp multi-part cur_loc recomputation and one-part expansion.
208         Drop cur_loc_changed.  Adjust access to offset.
209         (VEC (variable, heap)): Drop.
210         (changed_variables_stack, changed_values_stack): Drop.
211         (check_changed_vars_0, check_changed_vars_1): Remove.
212         (check_changed_vars_2, check_changed_vars_3): Remove.
213         (values_to_stack, remove_value_from_changed_variables): New.
214         (notify_dependents_of_changed_value, process_changed_values): New.
215         (emit_notes_for_changes): Revamp onepart updates.
216         (emit_notes_for_differences_1): Use onepart.  Drop cur_loc_changed
217         and value chains.  Propagate onepaux.  Recover empty_var and onepaux
218         from dropped_values.
219         (emit_notes_for_differences_2): Drop value chains.
220         (emit_notes_in_bb): Adjust.
221         (vt_emit_notes): Drop value chains, changed_variables_stack.
222         Initialize and release dropped_values.
223         (create_entry_value): Revamp.
224         (vt_add_function_parameter): Use new interface.
225         (note_register_arguments): Remove.
226         (vt_initialize): Drop value chains and register arguments.
227         (vt_finalize): Drop value chains.  Release windowed_parm_regs only
228         if HAVE_window_save.
229         * rtl.h: Document various pass-local uses of RTL flags.
230         * tree.h (DECL_RTL_KNOWN_SET): New.
231         * doc/invoke.texi (param max-vartrack-expr-depth): Update
232         description and default.
233
234 2011-10-19  Georg-Johann Lay  <avr@gjlay.de>
235
236         PR target/50447
237         * config/avr/avr.md (cc): New alternative out_plus_noclobber.
238         (adjust_len): Ditto.
239         (addhi3): Don't pipe through short; use gen_int_mode instead.
240         Prior to reload, expand to gen_addhi3_clobber.
241         (*addhi3): Use avr_out_plus_noclobber if applicable, use
242         out_plus_noclobber in cc and adjust_len attribute.
243         (addhi3_clobber): 2 new RTL peepholes.
244         (addhi3_clobber): New insn.
245         * config/avr/avr-protos.h: (avr_out_plus_noclobber): New prototype.
246         * config/avr/avr.c (avr_out_plus_noclobber): New function.
247         (notice_update_cc): Handle CC_OUT_PLUS_NOCLOBBER.
248         (avr_out_plus_1): Tweak if only MSB is +/-1 and other bytes are 0.
249         Set cc0 to set_zn for adiw on 16-bit values.
250         (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS_NOCLOBBER.
251         (expand_epilogue): No need to add 0 to frame_pointer_rtx.
252
253 2011-10-19  Richard Guenther  <rguenther@suse.de>
254
255         PR middle-end/50780
256         * tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
257         the condition is properly gimple before using it.
258         * tree-eh (stmt_could_throw_1_p): Properly extract the
259         operation type from comparisons.
260
261 2011-10-19  Roland Stigge  <stigge@antcom.de>
262
263         PR translation/48638
264         * plugin.c (add_new_plugin): Fix typo in fatal_error message.
265
266 2011-10-19  Roland Stigge  <stigge@antcom.de>
267
268         PR translation/49517
269         * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
270
271 2011-10-19  Richard Guenther  <rguenther@suse.de>
272
273         PR middle-end/50768
274         * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
275
276 2011-10-19  Andrey Belevantsev  <abel@ispras.ru>
277
278         PR rtl-optimization/50340
279         * sel-sched-ir.c (update_target_availability): LHS register
280         availability is not known if the unavailable LHS of the other
281         expression is a different register.
282
283 2011-10-19  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
284
285         PR target/50310
286         * config/spu/spu.c (spu_emit_vector_compare): Support unordered
287         floating-point comparisons.
288
289 2011-10-19  Jan Hubicka  <jh@suse.cz>
290
291         * cgraphunit.c (handle_alias_pairs): Also handle wekref with
292         destination declared.
293         (output_weakrefs): New function.
294         * varpool.c (varpool_create_variable_alias): Handle external aliases.
295
296 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
297
298         * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
299         second argument instead of mode.
300
301 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
302
303         * config/i386/i386.c (ix86_expand_vec_perm): In merge_two use
304         mode SUBREG of operands[0] as target.
305         (valid_perm_using_mode_p): Don't ignore higher bits of d->perm.
306         (expand_vec_pshufb): For V8SImode vmode emit avx2_permvarv8si.
307         (expand_vec_perm_1): Handle identity and some broadcast
308         permutations.
309         (expand_vec_perm_interleave2): Handle also 32-byte modes, using
310         vperm2[fi]128 or vpunpck[lh]* followed by single insn permutation.
311         For d->testing_p return true earlier to avoid creating more GC
312         garbage.
313         (expand_vec_perm_vpermq_perm_1): New function.
314         (expand_vec_perm_vpshufb2_vpermq): For d->testing_p return true
315         earlier to avoid creating more GC garbage.  Fix handling of
316         V16HImode.  Avoid some SUBREGs in SET_DEST.
317         (expand_vec_perm_broadcast_1): Return false for 32-byte integer
318         vector modes.
319         (expand_vec_perm_vpshufb4_vpermq2): New function.
320         (ix86_expand_vec_perm_builtin_1): Call expand_vec_perm_vpermq_perm_1
321         and expand_vec_perm_vpshufb4_vpermq2.
322
323 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
324
325         * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
326         before exiting.
327
328 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
329
330         PR tree-optimization/50717
331         * tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
332         parameter.  Calculate 'type' from stmt.
333         (convert_mult_to_widen): Update call the is_widening_mult_p.
334         (convert_plusminus_to_widen): Likewise.
335
336 2011-10-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
337
338         * config/spu/spu.c (struct machine_function): New data structure.
339         (spu_init_machine_status): New function.
340         (spu_option_override): Install it.
341         (get_pic_reg): Set and use cfun->machine->pic_reg.
342         (spu_split_immediate): Do not set crtl->uses_pic_offset_table.
343         (need_to_save_reg): Use cfun->machine->pic_reg instead of
344         checking crtl->uses_pic_offset_table.
345         (spu_expand_prologue): Likewise.
346
347 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
348
349         PR tree-optimization/50735
350         * function.c (gimplify_parameters): Use create_tmp_var instead of
351         create_tmp_reg.  If parm is not TREE_ADDRESSABLE and type is complex
352         or vector type, set DECL_GIMPLE_REG_P.
353
354 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
355
356         * config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
357         * config/arm/arm.opt: Add 'native' processor_type and
358         arm_arch enum values.
359         * config/arm/arm.h (host_detect_local_cpu): New prototype.
360         (EXTRA_SPEC_FUNCTIONS): New define.
361         (MCPU_MTUNE_NATIVE_SPECS): New define.
362         (DRIVER_SELF_SPECS): New define.
363         * config/arm/driver-arm.c: New file.
364         * config/arm/x-arm: New file.
365         * doc/invoke.texi (ARM Options): Document -mcpu=native,
366         -mtune=native and -march=native.
367
368 2011-10-18  Alexander Monakov  <amonakov@ispras.ru>
369
370         PR rtl-optimization/50205
371         * sel-sched.c (count_occurrences_1): Simplify on the assumption that
372         p->x is a register.  Forbid substitution when the same register is
373         found in a different mode.
374         (count_occurrences_equiv): Assert that 'what' is a register.
375
376 2011-10-18  Richard Guenther  <rguenther@suse.de>
377
378         PR tree-optimization/50767
379         * tree-ssa-pre.c (create_expression_by_pieces): Update the
380         folded statement.
381
382 2011-10-18  Julian Brown  <julian@codesourcery.com>
383
384         * config/arm/arm.c (arm_block_move_unaligned_straight)
385         (arm_adjust_block_mem, arm_block_move_unaligned_loop)
386         (arm_movmemqi_unaligned): New.
387         (arm_gen_movmemqi): Support unaligned block copies.
388
389 2011-10-18  Ira Rosen  <ira.rosen@linaro.org>
390
391         * doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
392         vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
393         * tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
394         VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
395         (op_code_prio): Likewise.
396         (op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
397         * optabs.c (optab_for_tree_code): Handle
398         VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
399         (init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
400         * optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
401         * genopinit.c (optabs): Initialize the new optabs.
402         * expr.c (expand_expr_real_2): Handle
403         VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
404         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
405         * tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
406         * tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
407         VEC_WIDEN_LSHIFT_LO_EXPR): New.
408         * cfgexpand.c (expand_debug_expr): Handle new tree codes.
409         * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
410         vect_recog_widen_shift_pattern.
411         (vect_handle_widen_mult_by_const): Rename...
412         (vect_handle_widen_op_by_const): ...to this.  Handle shifts.
413         Add a new argument, update documentation.
414         (vect_recog_widen_mult_pattern): Assume that only second
415         operand can be constant.  Update call to
416         vect_handle_widen_op_by_const.
417         (vect_recog_over_widening_pattern): Fix typo.
418         (vect_recog_widen_shift_pattern): New.
419         * tree-vect-stmts.c (vectorizable_type_promotion): Handle
420         widening shifts.
421         (supportable_widening_operation): Likewise.
422         * tree-inline.c (estimate_operator_cost): Handle new tree codes.
423         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
424         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
425         * config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
426         (vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
427         vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
428         Likewise.
429         * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
430         New.
431         * config/arm/iterators.md (V_innermode): New.
432         * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
433         for widening shift.
434
435 2011-10-18  Richard Guenther  <rguenther@suse.de>
436
437         * tree-ssa-alias.h (struct pt_solution): Remove
438         vars_contains_restrict member.
439         (pt_solutions_same_restrict_base): Remove.
440         (pt_solution_set): Adjust.
441         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Remove
442         vars_contains_restrict handling.
443         (dump_points_to_solution): Likewise.
444         (ptr_derefs_may_alias_p): Do not call pt_solutions_same_restrict_base.
445         * tree-ssa-structalias.c (struct variable_info): Remove is_restrict_var
446         field.
447         (new_var_info): Do not initialize it.
448         (ipa_escaped_pt): Adjust.
449         (make_constraint_from_restrict): Make the tag global.
450         (make_constraint_from_global_restrict): New function.
451         (make_constraint_from_heapvar): Remove.
452         (create_variable_info_for): Do not make restrict vars point
453         to NONLOCAL.
454         (intra_create_variable_infos): Likewise.
455         (find_what_var_points_to): Remove vars_contains_restrict handling.
456         (pt_solution_set): Adjust.
457         (pt_solution_ior_into): Likewise.
458         (pt_solutions_same_restrict_base): Remove.
459         (compute_points_to_sets): Do not test is_restrict_var.
460         * cfgexpand.c (update_alias_info_with_stack_vars): Adjust.
461         * gimple-pretty-print.c (pp_points_to_solution): Likewise.
462
463 2011-10-18  Tom de Vries  <tom@codesourcery.com>
464
465         PR tree-optimization/50672
466         * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
467         factored out of ...
468         (mark_virtual_phi_result_for_renaming): Use
469         mark_virtual_operand_for_renaming.
470         * tree-flow.h (mark_virtual_operand_for_renaming): Declare.
471         * tree-ssa-tail-merge.c (release_last_vdef): New function.
472         (purge_bbs): Add update_vops parameter.  Call release_last_vdef for each
473         deleted basic block.
474         (tail_merge_optimize): Add argument to call to purge_bbs.
475
476 2011-10-18  Richard Guenther  <rguenther@suse.de>
477
478         PR middle-end/50716
479         * expr.c (get_object_or_type_alignment): New function.
480         (expand_assignment): Use it.
481         (expand_expr_real_1): Likewise.
482
483 2011-10-18  Dodji Seketeli  <dodji@redhat.com>
484
485         PR bootstrap/50760
486         * input.c (dump_line_table_statistics): Use long, not size_t.
487
488 2011-10-17  Eric Botcazou  <ebotcazou@adacore.com>
489
490         * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
491
492 2011-10-17  Simon Baldwin  <simonb@google.com>
493             Ian Lance Taylor  <iant@google.com>
494
495         * configure.ac: Add --with-native-system-header-dir.  Set and
496         substitute NATIVE_SYSTEM_HEADER_DIR.  Use native_system_header
497         when setting target_header_dir.
498         * config.gcc: Always set native_system_header_dir.
499         (*-*-gnu*): Set native_system_header_dir.  Don't use t-gnu.
500         (i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir.  Don't
501         use i386/t-djgpp.
502         (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
503         native_system_header_dir.
504         (spu-*-elf*): Set native_system_header_dir.
505         * Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
506         @NATIVE_SYSTEM_HEADER_DIR@.
507         (PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
508         * cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
509         (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
510         STANDARD_INCLUDE_COMPONENT.
511         (cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR.  Rename
512         STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
513         * system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
514         STANDARD_INCLUDE_COMPONENT.
515         * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
516         * config/i386/t-mingw-w32: Likewise.
517         * config/i386/t-mingw-w64: Likewise.
518         * config/spu/t-spu-elf: Likewise.
519         * config/i386/t-djgpp: Remove.
520         * config/t-gnu: Remove.
521         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
522         (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
523         STANDARD_INCLUDE_COMPONENT.
524         * config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
525         * config/spu/spu-elf.h: Likewise.
526         * config/vms/xm-vms.h: Likewise.
527         * config/gnu.h: Likewise.
528         * config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
529         and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
530         NATIVE_SYSTME_HEADER_COMPONENT.
531         * doc/install.texi (Configuration): Document
532         --with-native-system-header-dir.  Mention it in the documentation
533         for --with-sysroot and --with-build-sysroot.
534         * doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
535         STANDARD_INCLUDE_DIR.  Rename STANDARD_INCLUDE_COMPONENT to
536         NATIVE_SYSTEM_HEADER_COMPONENT.  Rename uses of
537         STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
538         * doc/fragments.texi (Target Fragment): Don't document
539         NATIVE_SYSTEM_HEADER_DIR.
540         * configure, doc/tm.texi: Rebuild.
541
542 2011-10-17  Richard Henderson  <rth@redhat.com>
543
544         * config/sparc/sparc.md: Use register_or_zero_operand where rJ
545         is the constraint.
546
547         * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
548         patterns.
549         * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
550         * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
551
552 2011-10-17  David S. Miller  <davem@davemloft.net>
553
554         * config/sparc/sparc-modes.def: Add single entry vector modes for
555         DImode and SImode.
556         * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
557         mode iterators.
558         (mov<V32:mode>): Revert back to plain SFmode pattern.
559         (*movsf_insn): Likewise.
560         (mov<V64:mode>): Revert back to plain DFmode pattern.
561         (*movdf_insn_sp32): Likewise.
562         (*movdf_insn_sp32_v9): Likewise.
563         (*movdf_insn_sp64): Likewise.
564         (V64 mode splitters) Likewise.
565         (addsi3): Remove VIS alternatives.
566         (subsi3): Likewise.
567         (and<V64I:mode>3): Revert to DImode only pattern.
568         (and<V64I:mode>3_sp32): Likewise.
569         (*and<V64I:mode>3_sp64): Likewise.
570         (and<V32I:mode>3): Likewise.
571         (*and_not_<V64I:mode>_sp32): Likewise.
572         (*and_not_<V64I:mode>_sp64): Likewise.
573         (*and_not_<V32I:mode>): Likewise.
574         (ior<V64I:mode>3): Likewise.
575         (*ior<V64I:mode>3_sp32): Likewise.
576         (*ior<V64I:mode>3_sp64): Likewise.
577         (ior<V32I:mode>3): Likewise.
578         (*or_not_<V64I:mode>_sp32): Likewise.
579         (*or_not_<V64I:mode>_sp64): Likewise.
580         (*or_not_<V32I:mode>): Likewise.
581         (xor<V64I:mode>3): Likewise.
582         (*xor<V64I:mode>3_sp32): Likewise.
583         (*xor<V64I:mode>3_sp64): Likewise.
584         (xor<V32I:mode>3): Likewise.
585         (V64I mode splitters): Likewise.
586         (*xor_not_<V64I:mode>_sp32): Likewise.
587         (*xor_not_<V64I:mode>_sp64): Likewise.
588         (*xor_not_<V32I:mode>): Likewise.
589         (one_cmpl<V64I:mode>2): Likewise.
590         (*one_cmpl<V64I:mode>2_sp32): Likewise.
591         (*one_cmpl<V64I:mode>2_sp64): Likewise.
592         (one_cmpl<V32I:mode>2): Likewise.
593         (VM32, VM64, VMALL): New mode iterators.
594         (vbits, vconstr, vfptype): New mode attributes.
595         (mov<VMALL:mode>): New expander.
596         (*mov<VM32:mode>_insn): New insn.
597         (*mov<VM64:mode>_insn_sp64): New insn.
598         (*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
599         specifically for the register to memory case.
600         (vec_init<mode>): New expander.
601         (VADDSUB): New mode iterator.
602         (<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
603         with...
604         (<plusminus_insn><mode>3): New consolidated pattern.
605         (VL): New mode iterator for logical operations.
606         (vlsuf): New more attribute.
607         (vlop): New code iterator.
608         (vlinsn, vlninsn): New code attributes.
609         (<code><mode>3): New insn to non-negated vector logical ops.
610         (*not_<code><mode>3): Likewise for negated variants.
611         (*nand<mode>_vis): New insn.
612         (vlnotop): New code iterator.
613         (*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
614         (one_cmpl<mode>2): New insn.
615         (faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
616         (bshuffle<VM64:mode>_vis): Likewise.
617         (v<vis3_shift_patname><mode>3): Use GCM mode iterator.
618         (fp<plusminus_insn>64_vis): Use V1DI mode.
619         (VASS mode iterator): Use V1SI not SI mode.
620         * config/sparc/sparc.c (sparc_vis_init_builtins): Account for
621         single-entry vector mode changes.
622         (sparc_expand_builtin): Likewise.
623         (sparc_expand_vector_init): New function.
624         * config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.
625
626 2011-10-17  Kai Tietz  <ktietz@redhat.com>
627
628         * fold-const.c (simple_operand_p_2): New function.
629         (fold_truthop): Rename to
630         (fold_truth_andor_1): function name.
631         Additionally remove branching creation for logical and/or.
632         (fold_truth_andor): Handle branching creation for logical and/or here.
633
634 2011-10-17  Andi Kleen  <ak@linux.intel.com>
635
636         * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
637
638 2011-10-17  Georg-Johann Lay  <avr@gjlay.de>
639
640         * config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
641         * config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
642         (adjust_len): Add alternative "call".
643         (isa, enabled): New insn attributes.
644         (length): Use match_test with AVR_HAVE_JMP_CALL instead of
645         mcu_mega attribute.
646         (*sbrx_branch<mode>): Ditto.
647         (*sbrx_and_branch<mode>): Ditto.
648         (*sbix_branch): Ditto.
649         (*sbix_branch_bit7): Ditto.
650         (*sbix_branch_tmp): Ditto.
651         (*sbix_branch_tmp_bit7): Ditto.
652         (jump): Ditto.
653         (negsi2): Use attribute "isa" instead of assembler dialect.
654         (extendhisi2): Ditto.
655         (call_insn, call_value_insn): Set adjust_len attribute.
656         (indirect_jump): Indent to coding rules.
657         (call_prologue_saves): Use isa attribute instead of mcu_mega.
658         (epilogue_restores): Ditto.  Fix setting of SP as described in the
659         RTX pattern.
660         (*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
661         and *indirect_jump_avr6.
662         (*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
663         (*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
664         (*tablejump_rjmp, *tablejump_lib): Remove.
665         * config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.
666
667 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
668
669         PR c++/50757
670         * doc/invoke.texi ([Wnonnull]): Update.
671
672 2011-10-17  Richard Henderson  <rth@redhat.com>
673
674         PR 50746
675         * optabs.c (expand_vec_perm_expr): Fix indexing error.
676
677 2011-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>
678
679         * configure.ac: Display `yes' if the SystemTap header has been found.
680         * configure: Regenerate.
681
682 2011-10-08  Andi Kleen  <ak@linux.intel.com>
683
684         PR other/50636
685         * config.in, configure: Regenerate.
686         * configure.ac (madvise): Add to AC_CHECK_FUNCS.
687         * ggc-page.c (USING_MADVISE): Add.
688         (page_entry): Add discarded field.
689         (alloc_page): Check for discarded pages.
690         (release_pages): Add USING_MADVISE branch.
691
692 2011-10-17  Richard Guenther  <rguenther@suse.de>
693
694         PR tree-optimization/50729
695         * tree-vrp.c (extract_range_from_unary_expr_1): Remove redundant test.
696         (simplify_conversion_using_ranges): Properly test the
697         intermediate result.
698
699 2011-10-15  Tom Tromey  <tromey@redhat.com>
700             Dodji Seketeli  <dodji@redhat.com>
701
702         * ggc.h (ggc_round_alloc_size): Declare new public entry point.
703         * ggc-none.c (ggc_round_alloc_size): New public stub function.
704         * ggc-page.c (ggc_alloced_size_order_for_request): New static
705         function.  Factorized from ggc_internal_alloc_stat.
706         (ggc_round_alloc_size): New public function.  Uses
707         ggc_alloced_size_order_for_request.
708         (ggc_internal_alloc_stat): Use ggc_alloced_size_order_for_request.
709         * ggc-zone.c (ggc_round_alloc_size): New public function extracted
710         from ggc_internal_alloc_zone_stat.
711         (ggc_internal_alloc_zone_stat): Use ggc_round_alloc_size.
712         * toplev.c (general_init): Initialize
713         line_table->alloced_size_for_request.
714
715 2011-10-15  Tom Tromey  <tromey@redhat.com>
716             Dodji Seketeli  <dodji@redhat.com>
717
718         * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New macros.
719         (num_expanded_macros_counter, num_macro_tokens_counter): Declare
720         new counters.
721         (dump_line_table_statistics): Define new function.
722         * input.h (dump_line_table_statistics): Declare new function.
723         * toplev.c (dump_memory_report): Call dump_line_table_statistics.
724
725 2011-10-15  Tom Tromey  <tromey@redhat.com>
726             Dodji Seketeli  <dodji@redhat.com>
727
728         * doc/cppopts.texi: Document -fdebug-cpp.
729         * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor options.
730
731 2011-10-15  Tom Tromey  <tromey@redhat.com>
732             Dodji Seketeli  <dodji@redhat.com>
733
734         * gcc/diagnostic.h (diagnostic_report_current_module): Add a
735         location parameter.
736         * diagnostic.c (diagnostic_report_current_module): Add a location
737         parameter to the function definition.  Use it instead of
738         input_location.  Resolve the virtual location rather than just
739         looking up its map and risking to touch a resulting macro map.
740         (default_diagnostic_starter): Pass the relevant diagnostic
741         location to diagnostic_report_current_module.
742         * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): New.
743         (virt_loc_aware_diagnostic_finalizer): Likewise.
744         (diagnostic_report_current_function): Pass the
745         relevant location to diagnostic_report_current_module.
746         * tree-diagnostic.h (virt_loc_aware_diagnostic_finalizer): Declare
747         new function.
748         * toplev.c (general_init): By default, use the new
749         virt_loc_aware_diagnostic_finalizer as diagnostic finalizer.
750         * Makefile.in: Add vec.h dependency to tree-diagnostic.c.
751
752 2011-10-15  Tom Tromey  <tromey@redhat.com>
753             Dodji Seketeli  <dodji@redhat.com>
754
755         * doc/cppopts.texi (-ftrack-macro-expansion): Document new option.
756         * doc/invoke.texi (-ftrack-macro-expansion): Add this to the list of
757         preprocessor related options.
758
759 2011-10-15  Tom Tromey  <tromey@redhat>
760             Dodji Seketeli  <dodji@redhat.com>
761
762         * input.h (struct expanded_location): Move to libcpp/line-map.h.
763         (LOCATION_COLUMN): New accessor
764         (in_system_header_at): Use linemap_location_in_system_header_p.
765         * diagnostic.c (diagnostic_report_current_module): Adjust to avoid
766         touching the internals of struct line_map.  Use the public API instead.
767         (diagnostic_report_diagnostic): Don't use relational operator '<'
768         on virtual locations.  Use linemap_location_before_p instead.
769         * input.c (expand_location): Adjust to expand to the tokens'
770         spelling location when macro location tracking is on.
771
772
773 2011-10-08  Andi Kleen  <ak@linux.intel.com>
774
775         * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
776
777 2011-10-13  Andi Kleen  <ak@linux.intel.com>
778
779         * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
780
781 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
782
783         PR tree-optimization/50727
784         * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
785         DEF_STMT to the list of statements to be replaced by the
786         pattern statements.
787
788 2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>
789
790         PR rtl-optimization/50615
791         * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
792
793 2011-10-16  Jakub Jelinek  <jakub@redhat.com>
794
795         PR tree-optimization/50596
796         * tree-vectorizer.h (NUM_PATTERNS): Increase to 7.
797         * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
798         vect_recog_bool_pattern.
799         (check_bool_pattern, adjust_bool_pattern_cast,
800         adjust_bool_pattern, vect_recog_bool_pattern): New functions.
801
802 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
803
804         * tree-vect-stmts.c (vectorizable_load): For SLP without permutation
805         treat the first load of the node as the first element in its
806         interleaving chain.
807         * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
808         necessary and possible.
809         (vect_build_slp_tree): Add new argument.  Allow load groups of any size
810         in basic blocks.  Keep all the loads for further permutation check.
811         Use the new argument to determine if there is a permutation.  Update
812         the recursive calls.
813         (vect_supported_load_permutation_p): Allow subchains of interleaving
814         chains in basic block vectorization.
815         (vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
816         Check load permutation based on the new parameter.
817         (vect_schedule_slp_instance): Don't start from the first element in
818         interleaving chain unless the loads are permuted.
819
820 2011-10-15  Jan Hubicka  <jh@suse.cz>
821
822         PR target/48668
823         PR target/50689
824         * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
825         after function body.
826
827 2011-10-15  Richard Henderson  <rth@redhat.com>
828
829         * tree-vect-slp.c: Include langhooks.h.
830         (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin.
831         (vect_transform_slp_perm_load): Use can_vec_perm_expr_p.  Simplify
832         mask creation for VEC_PERM_EXPR.
833         * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask,
834         not the builtin.
835         (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin.
836         * Makefile.in (tree-vect-slp.o): Update dependency.
837         * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant.
838
839 2011-10-15  Alan Modra  <amodra@gmail.com>
840
841         PR bootstrap/50738
842         * ifcvt.c (dead_or_predicable): Revert accidental commit with
843         HAVE_simple_return test.
844
845 2011-10-15  Alan Modra  <amodra@gmail.com>
846
847         * ifcvt.c (dead_or_predicable): Disable if-conversion when
848         doing so is likely to kill a shrink-wrapping opportunity.
849
850         PR rtl-optimization/49941
851         * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
852
853         * rtl.h (set_return_jump_label): Declare.
854         * function.c (set_return_jump_label): New function, extracted..
855         (thread_prologue_and_epilogue_insns): ..from here.  Use it in
856         another instance to set return jump_label.
857         * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
858         * reorg.c (find_end_label): Likewise.
859
860 2011-10-14  David S. Miller  <davem@davemloft.net>
861
862         * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
863         with a more complete cpp test.
864         * config/sparc/linux64.h: Likewise.
865         * config/sparc/linux.h: Likewise.
866         * config/sparc/sparc.opt (sparc_debug): New target variable.
867         (mdebug): New target option.
868         * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
869         TARGET_DEBUG_OPTIONS): New defines.
870         * config/sparc/sparc.c (debug_target_flag_bits,
871         debug_target_flags): New functions.
872         (sparc_option_override): Add name strings back to cpu_table[].
873         Parse -mdebug string.  When TARGET_DEBUG_OPTIONS is true, print
874         out the target flags before and after override processing as well
875         as the selected cpu.  If MASK_V8PLUS, make sure that the selected
876         cpu is at least v9.
877
878 2011-10-15  Oleg Endo  <oleg.endo@t-online.de>
879
880         PR target/49263
881         * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
882         * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
883         * config/sh/sh.md (tstsi_t): Name existing insn.  Make inner
884         and instruction commutative.
885         (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
886         tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
887         tstsi_t_zero_extract_subreg_xor_little,
888         tstsi_t_zero_extract_subreg_xor_big): New insns.
889         (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
890         asm output.
891         (*andsi_compact): Reorder alternatives so that K08 is considered first.
892
893 2011-10-14  Eric Botcazou  <ebotcazou@adacore.com>
894
895         PR target/50354
896         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
897         processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
898
899 2011-10-14  Gerald Pfeifer  <gerald@pfeifer.com>
900
901         * invoke.texi (AVR Options): Avoid \leq{}.
902
903 2011-10-14  Kai Tietz  <ktietz@redhat.com>
904
905         * gimplify.c (gimplify_expr): Take care that for bitwise-binary
906         transformation the operands have compatible types.
907
908 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
909
910         * config/i386/sse.md (vec_widen_smult_hi_v8hi,
911         vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
912         vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
913         mode iterator and any_extend code iterator.
914         (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
915         (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
916         also for TARGET_SSE4_1 using pmuldq insn.
917         (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
918         (sse2_sse4_1): New code attr.
919         (udot_prodv4si): Macroize using any_extend code iterator.
920         (<s>dot_prodv8si): New expander.
921
922 2011-10-14  Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
923
924         * config/i386/i386.c (atom_cost): Changed cost for loading
925         QImode using movzbl.
926
927 2011-10-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
928
929         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
930         change on October 11th, 2011.
931
932 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
933
934         * config/i386/sse.md (vec_interleave_high<mode>,
935         vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
936         * config/i386/i386.c (expand_vec_perm_interleave3): New function.
937         (ix86_expand_vec_perm_builtin_1): Call it.
938
939 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
940
941         Fix thinko from r179765
942         * config/avr/avr.c (avr_option_override): Don't override
943         flag_omit_frame_pointer if not actually needed.
944
945 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
946
947         PR target/46278
948         * doc/invoke.texi (AVR Options): Document -mstrict-X.
949
950         * config/avr/avr.opt (-mstrict-X): New option.
951         (avr_strict_X): New variable reflecting -mstrict-X.
952         * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
953         outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
954         (avr_legitimate_address_p): Pass outer_code to
955         avr_reg_ok_for_addr_p and use that function in case PLUS.
956         (avr_mode_code_base_reg_class): Depend on avr_strict_X.
957         (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
958         (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
959
960 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
961
962         * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
963         of VI_128.
964
965         * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
966         (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
967         Use <sseinsnmode> instead of TI in mode attr.
968
969 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
970
971         * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
972         * config/arm/linux-atomic.c: Change comment to point to 64bit version.
973         (SYNC_LOCK_RELEASE): Instantiate 64bit version.
974         * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
975
976 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
977
978         * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
979         (arm_output_strex): Support strexd.
980         (arm_output_it): New helper to output it in Thumb2 mode only.
981         (arm_output_sync_loop): Support DI mode.  Change comment to
982         not support const_int.
983         (arm_expand_sync): Support DI mode.
984         * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
985         and LDREXD.
986         * config/arm/iterators.md (NARROW): move from sync.md.
987         (QHSD): New iterator for all current ARM integer modes.
988         (SIDI): New iterator for SI and DI modes only.
989         * config/arm/sync.md (sync_predtab): New mode_attr.
990         (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
991         (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
992         (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
993         (sync_nandsi): Fold into sync_nand<mode>.
994         (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
995         (sync_new_nandsi): Fold into sync_new_nand<mode>.
996         (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
997         (sync_old_nandsi): Fold into sync_old_nand<mode>.
998         (sync_compare_and_swap<mode>): Support SI & DI.
999         (sync_lock_test_and_set<mode>): Likewise.
1000         (sync_<sync_optab><mode>): Likewise.
1001         (sync_nand<mode>): Likewise.
1002         (sync_new_<sync_optab><mode>): Likewise.
1003         (sync_new_nand<mode>): Likewise.
1004         (sync_old_<sync_optab><mode>): Likewise.
1005         (sync_old_nand<mode>): Likewise.
1006         (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
1007         (arm_sync_lock_test_and_setsi): Likewise.
1008         (arm_sync_new_<sync_optab>si): Likewise.
1009         (arm_sync_new_nandsi): Likewise.
1010         (arm_sync_old_<sync_optab>si): Likewise.
1011         (arm_sync_old_nandsi): Likewise.
1012         (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
1013         (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
1014         (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
1015         (arm_sync_new_nand<mode> NARROW): Likewise.
1016         (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
1017         (arm_sync_old_nand<mode> NARROW): Likewise.
1018
1019 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1020
1021         PR target/48126
1022         * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1023
1024 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1025
1026         * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1027
1028 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1029
1030         * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1031
1032 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1033
1034         * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
1035         on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
1036
1037 2011-10-14  Richard Guenther  <rguenther@suse.de>
1038
1039         PR tree-optimization/50723
1040         * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1041
1042 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
1043
1044         * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1045         objc/objc-map.c.
1046
1047 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1048
1049         PR c++/17212
1050         * doc/invoke.texi ([Wformat-zero-length]): Update.
1051
1052 2011-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1053
1054         PR bootstrap/50699
1055         * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1056         build for powerpc targets.  (darwin_patch_builtins): Only build for
1057         powerpc targets.
1058
1059 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1060
1061         * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
1062         (avx_cvtdq2pd256_2): ... this.
1063         (sseunpackfltmode): New mode attr.
1064         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
1065         vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
1066         using VI2_AVX2 iterator.
1067         (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
1068
1069 2011-10-13  David S. Miller  <davem@davemloft.net>
1070
1071         * config/sparc/sparc.md (plusminus): New code iterator.
1072         (plusminus_insn): New code attr.
1073         (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
1074         using plusminus and plusminus_insn.
1075         (fpadd64_vis, fpsub64_vis): Likewise.
1076
1077 2011-10-13  Richard Henderson  <rth@redhat.com>
1078
1079         * doc/md.texi (vec_perm): Document fallback to byte permutation.
1080         * genopinit.c (optabs): Add vec_perm_const.
1081         * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
1082         Reject non-vector modes.  Allow fallback to byte permutation.
1083         (expand_vec_perm_expr_1): Split out from ...
1084         (expand_vec_perm_expr): ... here.  Allow fallback to byte permutation.
1085         * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
1086         * tree-vect-generic.c (lower_vec_perm): Update for name change.
1087
1088 2011-10-13  Richard Henderson  <rth@redhat.com>
1089
1090         * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1091
1092         * config/rs6000/spu.md (vec_permv16qi): New pattern.
1093
1094         * config/i386/i386.c (ix86_expand_vec_perm_const): New.
1095         * config/i386/i386-protos.h: Update.
1096         * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
1097         (vec_perm_const<VEC_PERM_CONST>): New expander.
1098
1099         * optabs.c (expand_vector_broadcast): New.
1100         (expand_binop): Expand scalar shifts of vectors to vector shifts
1101         of vectors, if the former isn't supported.
1102         * tree-vect-generic.c (expand_vector_operations_1): Don't do that
1103         here; always simplify to scalar shift of vector if possible.
1104
1105         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1106         test for vector splat.
1107
1108 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1109
1110         * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1111
1112 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1113             Richard Guenther  <rguenther@suse.de>
1114
1115         * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
1116         or complex vars even if their DECL_UID is in not_reg_needs bitmap.
1117
1118 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1119
1120         * config/i386/sse.md (reduc_umin_v8hi): New pattern.
1121         * config/i386/i386.c (ix86_build_const_vector): Handle
1122         also V32QI, V16QI, V16HI and V8HI modes.
1123         (emit_reduc_half): New function.
1124         (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
1125         Use emit_reduc_half helper function.
1126
1127 2011-10-13  Lawrence Crowl  <crowl@google.com>
1128             Diego Novillo  <dnovillo@google.com>
1129
1130         * lto-streamer-in.c (input_struct_function_base): Factor out of ...
1131         (input_function): ... here.
1132         * lto-streamer-out.c (output_struct_function_base): Factor out of ...
1133         (output_function): ... here.
1134
1135 2011-10-13  Gabriel Charette  <gchare@google.com>
1136             Diego Novillo  <dnovillo@google.com>
1137
1138         * streamer-hooks.h (struct streamer_hooks): Add hooks
1139         input_location and output_location.
1140         * lto-streamer-in.c (lto_input_location): Use
1141         streamer_hooks.input_location, if set.
1142         * lto-streamer-out.c (lto_output_location): Use
1143         streamer_hooks.output_location, if set.
1144
1145 2011-10-13  Eric Botcazou  <ebotcazou@adacore.com>
1146
1147         * doc/invoke.texi (SPARC options): Document -mfix-at697f.
1148         * config/sparc/sparc.opt (mfix-at697f): New option.
1149         * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
1150         (sparc_reorg): New function.
1151
1152 2011-10-13  Richard Guenther  <rguenther@suse.de>
1153
1154         PR tree-optimization/50712
1155         * ipa-split.c (split_function): Always re-gimplify parameters
1156         when they are not gimple vals before passing them.  Properly
1157         check for type compatibility.
1158
1159 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1160
1161         * function.c (gimplify_parameters): Set number of arguments of call to
1162         BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1163
1164 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1165
1166         * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
1167         for static const strings.
1168         * varasm.c (build_constant_desc): Generate the memory location of the
1169         constant using gen_const_mem.
1170
1171 2011-10-13  Richard Guenther  <rguenther@suse.de>
1172
1173         PR tree-optimization/50698
1174         * tree-data-ref.c (split_constant_offset_1): Also process
1175         offsets of &MEM.
1176
1177 2011-10-12  David S. Miller  <davem@davemloft.net>
1178
1179         * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1180         (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1181         unspecs.
1182         (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1183         of a vec_concat.
1184         (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
1185         (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
1186         Reimplement as unspecs and remove inaccurate comments.
1187         (vis3_shift_patname): New code attr.
1188         (<vis3_shift_insn><vbits>_vis): Rename to
1189         "v<vis3_shift_patname><mode>3".
1190         (vis3_addsub_ss_patname): New code attr.
1191         (<vis3_addsub_ss_insn><vbits>_vis): Rename to
1192         "<vis3_addsub_ss_patname><mode>3".
1193         * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
1194         accommodate pattern name changes.
1195
1196         * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
1197         to zero when assembler lacks support for such instructions.
1198         * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
1199         and MASK_FMAF in defaults when assembler lacks necessary support.
1200
1201 2011-10-12  Jakub Jelinek  <jakub@redhat.com>
1202
1203         * config/i386/sse.md (vec_unpacks_lo_<mode>,
1204         vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
1205         vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
1206         * config/i386/i386.c (ix86_expand_sse_unpack): Handle
1207         V32QImode, V16HImode and V8SImode for TARGET_AVX2.
1208
1209         * config/i386/sse.md (vec_avx2): New mode_attr.
1210         (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
1211         (mul<mode>3): ... this.
1212
1213         * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
1214         * config/i386/i386.c (ix86_expand_vec_perm): Handle
1215         V16QImode and V32QImode for TARGET_AVX2.
1216         (MAX_VECT_LEN): Increase to 32.
1217         (expand_vec_perm_blend): Add support for 32-byte integer
1218         vectors with TARGET_AVX2.
1219         (valid_perm_using_mode_p): New function.
1220         (expand_vec_perm_pshufb): Add support for 32-byte integer
1221         vectors with TARGET_AVX2.
1222         (expand_vec_perm_vpshufb2_vpermq): New function.
1223         (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
1224         (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
1225         with TARGET_AVX2.
1226         (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
1227         and expand_vec_perm_vpshufb2_vpermq_even_odd.
1228         * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
1229         32-byte integer vector modes.
1230         (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
1231         (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
1232         (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
1233         4 new operands.
1234         (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
1235         match_dup, instead add 4 new operands and require they have
1236         right cross-lane values.
1237         (avx2_permv4di): Change into define_expand.
1238         (avx2_permv4di_1): New instruction.
1239         (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
1240         for "xm" constrained operand.
1241         (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
1242
1243         * config/i386/sse.md (avx2_gathersi<mode>,
1244         avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
1245         match_scratch, change memory_operand to register_operand,
1246         add (mem:BLK (scratch)) use.
1247         (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
1248         *avx2_gatherdi<mode>256): Add clobber of match_scratch,
1249         add earlyclobber to the output operand and match_scratch,
1250         add (mem:BLK (scratch)) use, change the other mem to match_operand.
1251         Use %p6 instead of %c6 in the pattern.
1252         * config/i386/i386.c (ix86_expand_builtin): Adjust for
1253         operand 2 being a Pmode register_operand instead of memory_operand.
1254
1255 2011-10-12  Kai Tietz  <ktietz@redhat.com>
1256
1257         * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1258
1259 2011-10-12  Steve Ellcey  <sje@cup.hp.com>
1260
1261         * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1262
1263 2011-10-12  Richard Guenther  <rguenther@suse.de>
1264
1265         * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
1266         of the first store we visit in a basic-block.
1267         (get_continuation_for_phi): Search for a candidate VUSE that
1268         might dominates all others.  Do pairwise disambiguation against
1269         that candidate.
1270
1271 2011-10-12  Paul Koning  <pkoning@gcc.gnu.org>
1272
1273         PR tree-optimization/50189
1274         * tree-vrp.c (extract_range_from_assert): Use the type of
1275         the variable, not the limit.
1276
1277 2011-10-12  Richard Guenther  <rguenther@suse.de>
1278
1279         PR tree-optimization/50700
1280         * tree-object-size.c (addr_object_size): Simplify and treat
1281         MEM_REF bases consistently.
1282
1283 2011-10-12  Bernd Schmidt  <bernds@codesourcery.com>
1284
1285         * function.c (prepare_shrink_wrap, bb_active_p): New function.
1286         (thread_prologue_and_epilogue_insns): Use bb_active_p.  Call
1287         prepare_shrink_wrap, then recompute bb_active_p for the last block.
1288
1289 2011-10-12  Joseph Myers  <joseph@codesourcery.com>
1290
1291         PR c/50565
1292         * convert.c (convert_to_integer): Do not narrow operands of
1293         pointer subtraction.
1294
1295 2011-10-12  Nick Clifton  <nickc@redhat.com>
1296
1297         * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro.  Used to
1298         emit a .eabi_attribute assembler directive, possibly with a
1299         comment attached.
1300         * config/arm/arm.c (arm_file_start): Use the new macro.
1301         * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1302
1303 2011-10-12  Georg-Johann Lay  <avr@gjlay.de>
1304
1305         PR target/49939
1306         * config/avr/avr.md (*movqi): Rename to movqi_insn.
1307         (*call_insn): Rename to call_insn.
1308         (*call_value_insn): Rename to call_value_insn.
1309         * config/avr/avr.c (avr_2word_insn_p): New static function.
1310         (jump_over_one_insn_p): Use it.
1311
1312 2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
1313
1314         * expr.h (copy_blkmode_to_reg): Declare.
1315         * expr.c (copy_blkmode_to_reg): New function.
1316         (expand_assignment): Don't expand register RESULT_DECLs before
1317         the lhs.  Use copy_blkmode_to_reg to copy BLKmode values into a
1318         RESULT_DECL register.
1319         (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
1320         * stmt.c (expand_return): Move BLKmode-to-register code into
1321         copy_blkmode_to_reg.
1322
1323 2011-10-11  Eric Botcazou  <ebotcazou@adacore.com>
1324
1325         PR target/49965
1326         * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
1327         (mov<F:mode>cc): Likewise.
1328
1329 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1330
1331         * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
1332
1333 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
1334
1335         * tree.h (built_in_decls): Delete old interface with two parallel
1336         arrays to hold standard builtin declarations, and replace it with
1337         a function based interface that can support creating builtins on
1338         the fly in the future.  Change all uses, and poison the old
1339         names.  Make sure 0 is not a legitimate builtin index.
1340         (implicit_built_in_decls): Ditto.
1341         (built_in_info): Ditto.
1342         (BUILTIN_VALID_P): Ditto.
1343         (builtin_decl_explicit): Ditto.
1344         (builtin_decl_implicit): Ditto.
1345         (set_builtin_decl): Ditto.
1346         (set_builtin_decl_implicit_p): Ditto.
1347         (builtin_decl_explicit_p): Ditto.
1348         (builtin_decl_implicit_p): Ditto.
1349         * tree-complex.c (expand_complex_libcall): Ditto.
1350         * tree-loop-distribution.c (generate_memset_zero): Ditto.
1351         * tree-ssa-strlen.c (get_string_length): Ditto.
1352         (handle_builtin_strcpy): Ditto.
1353         (handle_builtin_strcat): Ditto.
1354         * tree.c (iterative_hash_expr): Ditto.
1355         (local_define_builtin): Ditto.
1356         (build_common_builtin_nodes): Ditto.
1357         * builtins.c (built_in_decls): Ditto.
1358         (implicit_built_in_decls): Ditto.
1359         (built_in_info): Ditto
1360         (expand_builtin_classify_type): Ditto.
1361         (mathfn_built_in_1): Ditto.
1362         (expand_builtin_cexpi): Ditto.
1363         (expand_builtin_mempcpy_args): Ditto.
1364         (expand_builtin_stpcpy): Ditto.
1365         (gimplify_va_arg_expr): Ditto.
1366         (expand_builtin_sync_operation): Ditto.
1367         (build_builtin_expect_predicate): Ditto.
1368         (fold_builtin_memory_op): Ditto.
1369         (fold_builtin_strcpy): Ditto.
1370         (fold_builtin_stpcpy): Ditto.
1371         (fold_builtin_strncpy): Ditto.
1372         (fold_builtin_interclass_mathfn): Ditto.
1373         (fold_builtin_classify): Ditto.
1374         (fold_builtin_2): Ditto.
1375         (fold_builtin_strstr): Ditto.
1376         (fold_builtin_strrchr): Ditto.
1377         (fold_builtin_strpbrk): Ditto.
1378         (fold_builtin_strcat): Ditto.
1379         (fold_builtin_strncat): Ditto.
1380         (fold_builtin_strcspn): Ditto.
1381         (fold_builtin_fputs): Ditto.
1382         (fold_builtin_sprintf): Ditto.
1383         (fold_builtin_snprintf): Ditto.
1384         (expand_builtin_memory_chk): Ditto.
1385         (fold_builtin_memory_chk): Ditto.
1386         (fold_builtin_stxcpy_chk): Ditto.
1387         (fold_builtin_strncpy_chk): Ditto.
1388         (fold_builtin_strcat_chk): Ditto.
1389         (fold_builtin_strncat_chk): Ditto.
1390         (fold_builtin_sprintf_chk_1): Ditto.
1391         (fold_builtin_snprintf_chk_1): Ditto.
1392         (fold_builtin_printf): Ditto.
1393         (fold_builtin_fprintf): Ditto.
1394         (fold_call_stmt): Ditto.
1395         (set_builtin_user_assembler_name): Ditto.
1396         * tree-emutls.c (emutls_common_1): Ditto.
1397         * omp-low.c (scan_omp): Ditto.
1398         (lower_rec_input_clauses): Ditto.
1399         (lower_reduction_clauses): Ditto.
1400         (expand_parallel_call): Ditto.
1401         (expand_task_call): Ditto.
1402         (maybe_catch_exception): Ditto.
1403         (optimize_omp_library_calls): Ditto.
1404         (expand_omp_for_generic): Ditto.
1405         (expand_omp_for_static_nochunk): Ditto.
1406         (expand_omp_for_static_chunk): Ditto.
1407         (expand_omp_sections): Ditto.
1408         (expand_omp_atomic_fetch_op): Ditto.
1409         (expand_omp_atomic_pipeline): Ditto.
1410         (expand_omp_atomic_mutex): Ditto.
1411         (lower_omp_single_simple): Ditto.
1412         (lower_omp_single_copy): Ditto.
1413         (lower_omp_master): Ditto.
1414         (lower_omp_ordered): Ditto.
1415         (lower_omp_critical): Ditto.
1416         * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
1417         * builtins.c (DEF_BUILTIN_STUB): Ditto.
1418         (BUILT_IN_NONE): Ditto.
1419         * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
1420         * gimple-low.c (lower_function_body): Ditto.
1421         (lower_builtin_setjmp): Ditto.
1422         * c-decl.c (merge_decls): Ditto.
1423         * tree-eh.c (lower_resx): Ditto.
1424         (lower_resx): Ditto.
1425         (lower_eh_dispatch): Ditto.
1426         * function (gimplify_parameters): Ditto.
1427         * c-typeck.c (build_function_call_vec): Ditto.
1428         * gimplify.c (build_stack_save_restore): Ditto.
1429         (gimplify_vla_decl): Ditto.
1430         (gimplify_modify_expr_to_memcpy): Ditto.
1431         (gimplify_modify_expr_to_memset): Ditto.
1432         (gimplify_variable_sized_compare): Ditto.
1433         (gimplify_function_tree): Ditto.
1434         * calls.c (emit_call_1): Ditto.
1435         * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
1436         * tree-nested.c (convert_nl_goto_reference): Ditto.
1437         (convert_tramp_reference_op): Ditto.
1438         (finalize_nesting_tree_1): Ditto.
1439         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
1440         (tree_ssa_prefetch_arrays): Ditto.
1441         * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
1442         * system.h (built_in_decls): Ditto.
1443         (implicit_built_in_decls): Ditto.
1444         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1445         * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
1446         * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
1447         (ix86_veclibabi_svml): Ditto.
1448         (ix86_veclibabi_acml): Ditto.
1449         * config/vms/vms.c (vms_patch_builtins): Ditto.
1450         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
1451         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
1452         (rs6000_builtin_vectorized_libmass): Ditto.
1453         (rs6000_init_builtins): Ditto.
1454         * config/darwin.c (darwin_override_options): Ditto.
1455         (darwin_patch_builtin): Ditto.
1456         (darwin_rename_builtins): Ditto.
1457         * config/pa/pa.c (pa_init_builtins): Ditto.
1458
1459 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1460
1461         * tree.h (copy_ref_info): Expose existing function.
1462         * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
1463         * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
1464
1465 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
1466
1467         * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
1468         prototype.
1469         (avr_regno_mode_code_ok_for_base_p): New prototype.
1470         * config/avr/avr.h (BASE_REG_CLASS): Remove.
1471         (REGNO_OK_FOR_BASE_P): Remove.
1472         (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
1473         (REG_OK_FOR_BASE_STRICT_P): Remove.
1474         (MODE_CODE_BASE_REG_CLASS): New define.
1475         (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
1476         * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
1477         (avr_regno_mode_code_ok_for_base_p): New function.
1478         (avr_reg_ok_for_addr_p): New static function.
1479         (avr_legitimate_address_p): Use it.  Beautify.
1480
1481 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
1482
1483         PR target/50447
1484         * config/avr/avr.md (cc): Add out_plus attribute alternative.
1485         (addsi3): Use it.  Adapt avr_out_plus to new prototype.  Use
1486         avr_out_plus for all CONST_INT addends.
1487         * config/avr/avr-protos.h (avr_out_plus): Change prototype.
1488         * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
1489         CC_OUT_PLUS.
1490         (avr_out_plus_1): Change prototype and report effect on cc0.
1491         (avr_out_plus): Ditto.
1492         (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
1493
1494 2011-10-11  H.J. Lu  <hongjiu.lu@intel.com>
1495
1496         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
1497         the extra break.
1498
1499 2011-10-11  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1500
1501         * doc/invoke.texi: Document new warning.
1502         * common.opt (Wvector-operation-performance): Define new warning.
1503         * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
1504         vector operation.
1505         (exapnd_vector_parallel): Warn about expanded vector operation.
1506         (lower_vec_shuffle): Warn about expanded vector operation.
1507         * c-typeck.c (c_build_vec_perm_expr): Store correct location
1508         when creating VEC_PERM_EXPR.
1509
1510 2011-10-11  Richard Guenther  <rguenther@suse.de>
1511
1512         PR tree-optimization/50204
1513         * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
1514         two argument handling from ...
1515         (get_continuation_for_phi): ... here.  Handle arbitrary number
1516         of PHI args.
1517
1518 2011-10-11  Richard Sandiford  <richard.sandiford@linaro.org>
1519
1520         * modulo-sched.c: Fix comment typo.  Mention the possibility
1521         of using scheduling windows of II+1 cycles.
1522
1523 2011-10-11  Tristan Gingold  <gingold@adacore.com>
1524
1525         * doc/invoke.texi (C Dialect Options): Document
1526         -fallow-parameterless-variadic-functions.
1527         * c-parser.c (c_parser_parms_list_declarator): Handle it.
1528
1529 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1530
1531         * config/avr/avr.c (avr_option_override): Set flag_omit_frame_pointer
1532         to 0 if frame pointer is needed for unwinding.
1533
1534 2011-10-10  Uros Bizjak  <ubizjak@gmail.com>
1535
1536         PR bootstrap/50665
1537         * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm.  Move from enum
1538         optab_index to enum direct_optab_index.
1539         (vec_perm_optab): Update.
1540
1541 2011-10-10  Anatoly Sokolov  <aesok@post.ru>
1542
1543         * config/cris/cris.c (cris_preferred_reload_class): New function.
1544         (TARGET_PREFERRED_RELOAD_CLASS): Define.
1545         * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
1546
1547 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1548
1549         * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
1550         !AVR_HAVE_JMP_CALL.
1551         (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
1552         (*tablejump_enh, *tablejump): Remove insns.
1553         * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
1554         EIJMP for indirect jump.  Use LPM Z+ where available.
1555
1556 2011-10-10  Richard Henderson  <rth@redhat.com>
1557
1558         * doc/md.texi (vec_perm_const): Fix typo in cindex.
1559
1560 2011-10-10  Kirill Yukhin  <kirill.yukhin@intel.com>
1561             Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
1562
1563         * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
1564
1565 2011-10-10  Richard Guenther  <rguenther@suse.de>
1566
1567         PR middle-end/50389
1568         * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
1569         mark symbols for renaming.  Append the VUSE to all statements
1570         that possibly can have one.
1571
1572 2011-10-10  Richard Guenther  <rguenther@suse.de>
1573
1574         * ipa-split.c (pass_split_functions): Add verification TODOs.
1575         (pass_feedback_split_functions): Likewise.
1576
1577 2011-10-10  Richard Guenther  <rguenther@suse.de>
1578
1579         PR middle-end/50195
1580         * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
1581         only when optimizing.
1582
1583 2011-10-10  Nick Clifton  <nickc@redhat.com>
1584
1585         PR middle-end/49801
1586         * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
1587         df_get_live_out instead of accessing the bitmaps directly.
1588         (execute_compare_elim_after_reload): Remove calls to df_set_flags,
1589         df_live_add_problem and df_analyze.
1590
1591 2011-10-10  Michael Matz  <matz@suse.de>
1592
1593         PR middle-end/50638
1594         * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
1595
1596 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1597
1598         * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
1599         (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
1600         (node_sched_params): Remove first_reg_move and nreg_moves.
1601         (ps_num_consecutive_stages, extend_node_sched_params): New functions.
1602         (update_node_sched_params): Move up file.
1603         (print_node_sched_params): Print the stage.  Don't dump info related
1604         to first_reg_move and nreg_moves.
1605         (set_columns_for_row): New function.
1606         (set_columns_for_ps): Move up file and use set_columns_for_row.
1607         (schedule_reg_move): New function.
1608         (schedule_reg_moves): Call extend_node_sched_params and
1609         schedule_reg_move.  Extend size of uses bitmap.  Initialize
1610         num_consecutive_stages.  Return false if a move could not be
1611         scheduled.
1612         (apply_reg_moves): Don't emit moves here.
1613         (permute_partial_schedule): Handle register moves.
1614         (duplicate_insns_of_cycles): Remove for_prolog.  Emit moves according
1615         to the same stage-count test as ddg nodes.
1616         (generate_prolog_epilog): Update calls accordingly.
1617         (sms_schedule): Allow move-scheduling to add a new first stage.
1618
1619 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1620
1621         * modulo-sched.c (ps_insn): Adjust comment.
1622         (ps_reg_move_info): New structure.
1623         (partial_schedule): Add reg_moves field.
1624         (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
1625         (node_sched_params): Turn first_reg_move into an identifier.
1626         (ps_reg_move): New function.
1627         (ps_rtl_insn): Cope with register moves.
1628         (ps_first_note): Adjust comment and assert that the instruction
1629         isn't a register move.
1630         (node_sched_params): Replace with...
1631         (node_sched_param_vec): ...this vector.
1632         (set_node_sched_params): Adjust accordingly.
1633         (print_node_sched_params): Take a partial schedule instead of a ddg.
1634         Use ps_rtl_insn and ps_reg_move.
1635         (generate_reg_moves): Rename to...
1636         (schedule_reg_moves): ...this.  Remove rescan parameter.  Record each
1637         move in the partial schedule, but don't emit it here.  Don't perform
1638         register substitutions here either.
1639         (apply_reg_moves): New function.
1640         (duplicate_insns_of_cycles): Use register indices directly,
1641         rather than finding instructions using PREV_INSN.  Use ps_reg_move.
1642         (sms_schedule): Call schedule_reg_moves before committing to
1643         a partial schedule.   Try the next ii if the schedule fails.
1644         Use apply_reg_moves instead of generate_reg_moves.  Adjust
1645         call to print_node_sched_params.  Free node_sched_param_vec
1646         instead of node_sched_params.
1647         (create_partial_schedule): Initialize reg_moves.
1648         (free_partial_schedule): Free reg_moves.
1649
1650 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1651
1652         * modulo-sched.c (ps_insn): Replace node field with an identifier.
1653         (SCHED_ASAP): Replace with..
1654         (NODE_ASAP): ...this macro.
1655         (SCHED_PARAMS): New macro.
1656         (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
1657         (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
1658         (node_sched_params): Remove asap.
1659         (ps_rtl_insn, ps_first_note): New functions.
1660         (set_node_sched_params): Use XCNEWVEC.  Don't copy across the
1661         asap values.
1662         (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
1663         (generate_reg_moves): Pass ids to the SCHED_* macros.
1664         (update_node_sched_params): Take a ps insn identifier rather than
1665         a node as parameter.  Use ps_rtl_insn.
1666         (set_columns_for_ps): Update for above field and SCHED_* macro changes.
1667         (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
1668         (optimize_sc): Update for above field and SCHED_* macro changes.
1669         Update calls to try_scheduling_node_in_cycle and
1670         update_node_sched_params.
1671         (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
1672         macro changes.  Use ps_rtl_insn and ps_first_note.
1673         (sms_schedule): Pass ids to the SCHED_* macros.
1674         (get_sched_window): Adjust for above field and SCHED_* macro changes.
1675         Use NODE_ASAP instead of SCHED_ASAP.
1676         (try_scheduling_node_in_cycle): Remove node parameter.  Update
1677         call to ps_add_node_check_conflicts.  Pass ids to the SCHED_* macros.
1678         (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
1679         (ps_insert_empty_row): Adjust for above field changes.
1680         (compute_split_row): Use ids rather than nodes.
1681         (verify_partial_schedule): Adjust for above field changes.
1682         (print_partial_schedule): Use ps_rtl_insn.
1683         (create_ps_insn): Take an id rather than a node.
1684         (ps_insn_find_column): Adjust for above field changes.
1685         Use ps_rtl_insn.
1686         (ps_insn_advance_column): Adjust for above field changes.
1687         (add_node_to_ps): Remove node parameter.  Update call to
1688         create_ps_insn.
1689         (ps_has_conflicts): Use ps_rtl_insn.
1690         (ps_add_node_check_conflicts): Replace node parameter than an id.
1691
1692 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1693
1694         * modulo-sched.c (undo_replace_buff_elem): Delete.
1695         (generate_reg_moves): Don't build and return an undo list.
1696         (free_undo_replace_buff): Delete.
1697         (sms_schedule): Adjust call to generate_reg_moves.
1698         Don't call free_undo_replace_buff.
1699
1700 2011-10-10  Matthias Klose <doko@ubuntu.com>
1701
1702         * common/config/m32c: Remove empty directory.
1703
1704 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1705
1706         * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
1707
1708 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1709
1710         PR target/50652
1711         * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
1712         atmega164a to 0x100.
1713
1714 2011-10-09  Eric Botcazou  <ebotcazou@adacore.com>
1715
1716         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
1717         the replacement if the conversion to the LHS type is not useless.
1718
1719 2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
1720
1721         PR tree-optimization/50635
1722         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
1723         DEF_STMT to the list of statements to be replaced by the
1724         pattern statements.
1725         (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
1726
1727 2011-10-09  Anatoly Sokolov  <aesok@post.ru>
1728
1729         * system.h: Commit forgotten hunk in previous patch.
1730         (OUTPUT_ADDR_CONST_EXTRA): Poison.
1731
1732 2011-10-08  Nicola Pero  <nicola.pero@meta-innovation.com>
1733
1734         PR libobjc/50428
1735         * doc/objc.texi (Garbage Collection): Updated example to protect
1736         +initialize against execution in subclasses.
1737
1738 2011-10-07  Richard Henderson  <rth@redhat.com>
1739
1740         * doc/extend.texi (__builtin_shuffle): Improve the description to
1741         include the modulus of the selector.  Mention OpenCL.
1742         * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
1743
1744         * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
1745         * genopinit.c (optabs): Rename vshuffle to vec_perm.
1746         * c-typeck.c (c_build_vec_perm_expr): Rename from
1747         c_build_vec_shuffle_expr.  Update for name changes.
1748         * optabs.c (expand_vec_perm_expr_p): Rename from
1749         expand_vec_shuffle_expr_p.
1750         (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
1751         * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
1752         (vec_perm_optab): Rename from vshuffle_optab.
1753         * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
1754         c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
1755         tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
1756
1757         * config/i386/i386.c (ix86_expand_vec_perm): Rename from
1758         ix86_expand_vshuffle.
1759         * config/i386/i386-protos.h: Update.
1760         * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
1761         (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
1762
1763 2011-10-07  Richard Henderson  <rth@redhat.com>
1764
1765         * config/i386/predicates.md (avx2_pblendw_operand): New.
1766         * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
1767         (avx2_pblendw, *avx2_pblendw): New expander and insn.
1768
1769 2011-10-07  Richard Henderson  <rth@redhat.com>
1770
1771         * config/i386/i386.c (bdesc_args): Update code for
1772         __builtin_ia32_palignr256.  Change type of __builtin_ia32_pslldqi256,
1773         and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
1774         (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
1775         * config/i386/sse.md (mode iterator V16): Add V2TI.
1776         (mode iterator SSESCALARMODE): Use V2TI not V4DI.
1777         (mode attr ssse3_avx2): Add V2TI.
1778         (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
1779
1780 2011-10-07  David S. Miller  <davem@davemloft.net>
1781
1782         PR 50655
1783         * configure.ac: Add .register directives to VIS3 test.
1784         * configure: Regenerate.
1785
1786 2011-10-07  Richard Henderson  <rth@redhat.com>
1787
1788         * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
1789
1790 2011-10-07  Richard Henderson  <rth@redhat.com>
1791
1792         PR 49752
1793         * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
1794
1795 2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
1796
1797         * config/arm/predicates.md (shift_amount_operand): Remove constant
1798         range check.
1799         (shift_operator): Check range of constants for all shift operators.
1800
1801 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1802
1803         * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
1804         Load GOT pointer for non-pic builds.
1805         (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
1806         (s390_emit_call): Likewise.
1807
1808 2011-10-07  Tom de Vries  <tom@codesourcery.com>
1809
1810         PR middle-end/50527
1811         * tree.c (build_common_builtin_nodes): Add local_define_builtin for
1812         BUILT_IN_ALLOCA_WITH_ALIGN.  Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
1813         throw.
1814         * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
1815         arglist.  Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
1816         (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1817         (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1818         * tree-ssa-ccp.c (evaluate_stmt): Set align for
1819         BUILT_IN_ALLOCA_WITH_ALIGN.
1820         (fold_builtin_alloca_for_var): Rename to ...
1821         (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
1822         BUILT_IN_ALLOCA_WITH_ALIGN argument.
1823         (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
1824         fold_builtin_alloca_with_align.
1825         (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1826         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
1827         DEF_BUILTIN_STUB.
1828         * ipa-pure-const.c (special_builtin_state): Handle
1829         BUILT_IN_ALLOCA_WITH_ALIGN.
1830         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
1831         (call_may_clobber_ref_p_1): Same.
1832         * function.c (gimplify_parameters): Lower vla to
1833         BUILT_IN_ALLOCA_WITH_ALIGN.
1834         * gimplify.c (gimplify_vla_decl): Same.
1835         * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1836         * tree-mudflap.c (mf_xform_statements): Same.
1837         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
1838         (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
1839         * varasm.c (incorporeal_function_p): Same.
1840         * tree-object-size.c (alloc_object_size): Same.
1841         * gimple.c (gimple_build_call_from_tree): Same.
1842
1843 2011-10-07  Bernd Schmidt  <bernds@codesourcery.com>
1844
1845         * function.c (frame_required_for_rtx): Remove function.
1846         (requires_stack_frame_p): New arg set_up_by_prologue.  All callers
1847         changed.  Compute a set of mentioned registers and compare against
1848         the new arg rather than calling frame_required_for_rtx.
1849         (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
1850         reg set.  Convert the unconverted_simple_returns mechanism to store
1851         jump insns rather than their basic blocks.  Also check the
1852         orig_entry_edge destination for new blocks.
1853
1854 2011-10-07  Jakub Jelinek  <jakub@redhat.com>
1855
1856         PR tree-optimization/50650
1857         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
1858         call vect_is_simple_cond here, instead fail if cond_expr isn't
1859         COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
1860         for cond_expr's first operand.
1861         * tree-vect-stmts.c (vect_is_simple_cond): Static again.
1862         * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
1863
1864 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1865
1866         * config/s390/s390.md (DWH, dwh): New mode macros.
1867         ("umulsidi3"): Extend to support "umulditi3" as well.
1868
1869 2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
1870             H.J. Lu  <hongjiu.lu@intel.com>
1871
1872         PR target/50603
1873         * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
1874         integer PLUS RTX to a register to improve address combine.
1875
1876 2011-10-06  Richard Henderson  <rth@redhat.com>
1877
1878         * combine-stack-adjust.c (maybe_move_args_size_note): Add after
1879         parameter; use it to decide whether to merge two notes.
1880         (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
1881         for the deallocation case as well.
1882
1883 2011-10-06  Anatoly Sokolov  <aesok@post.ru>
1884
1885         * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
1886         * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
1887         * doc/tm.texi: Regenerate.
1888         * target.def (output_addr_const_extra): Use
1889         hook_bool_FILEptr_rtx_false.
1890         * targhooks.c (default_asm_output_addr_const_extra): Remove.
1891         * targhooks.h (default_asm_output_addr_const_extra): Remove.
1892         * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
1893         * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
1894
1895 2011-10-06  David S. Miller  <davem@davemloft.net>
1896
1897         * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
1898         (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
1899         SI mode 64-bit code gen case explicitly zero-extend and truncate.
1900         (*popcount<mode>_sp64): Split up into...
1901         (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
1902         SImode case use truncate.
1903         (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
1904         subtract so the compiler can optimize it.
1905         (SIDI): Remove unused mode iterator.
1906
1907 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1908
1909         * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
1910         on the orig_entry_edge. Don't account for it in prologue_clobbered.
1911
1912 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1913
1914         PR tree-optimization/50596
1915         * tree-vectorizer.h (vect_is_simple_cond): New prototype.
1916         (NUM_PATTERNS): Change to 6.
1917         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
1918         function.
1919         (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
1920         (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
1921         if it already has one, and don't set STMT_VINFO_VECTYPE in it
1922         if it is already set.
1923         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
1924         COND_EXPR in pattern stmts.
1925         (vect_is_simple_cond): No longer static.
1926
1927 2001-10-06  Richard Henderson  <rth@redhat.com>
1928
1929         * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
1930         * config/i386/sse.md (sseshuffint): Remove.
1931         (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
1932         (VSHUFFLE_AVX2): New mode iterator.
1933         (vshuffle<mode>): Use it.
1934         (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
1935
1936         * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
1937         for vector_all_ones_operand.
1938         (ix86_expand_int_vcond): Distinguish between comparison mode
1939         and data mode.  Allow them to differ.
1940         (ix86_expand_vshuffle): Don't force data mode to match maskmode.
1941
1942 2001-10-06  Richard Henderson  <rth@redhat.com>
1943
1944         * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
1945         mask operand.  Tidy the code.
1946
1947 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1948
1949         * tree-vect-patterns.c (vect_pattern_recog_1): Use
1950         vect_recog_func_ptr typedef for the first argument.
1951         (vect_pattern_recog): Rename vect_recog_func_ptr variable
1952         to vect_recog_func, use vect_recog_func_ptr typedef for it.
1953
1954         PR tree-optimization/49279
1955         * tree-ssa-structalias.c (find_func_aliases): Don't handle
1956         CAST_RESTRICT.
1957         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
1958         restrict propagation.
1959         * tree-ssa.c (useless_type_conversion_p): Don't return false
1960         if TYPE_RESTRICT differs.
1961
1962 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1963
1964         * function.c (thread_prologue_and_epilogue_insns): Build a vector
1965         of unconverted simple return blocks rather than trying to
1966         recompute them later based on bb_flags bitmap tests.
1967
1968 2011-10-06  Michael Matz  <matz@suse.de>
1969
1970         * tree-flow.h (get_var_ann): Don't declare.
1971         * tree-flow-inline.h (get_var_ann): Remove.
1972         (set_is_used): Use var_ann, not get_var_ann.
1973         * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
1974         * tree-profile.c (gimple_gen_edge_profiler): Call
1975         find_referenced_var_in.
1976         (gimple_gen_interval_profiler): Ditto.
1977         (gimple_gen_pow2_profiler): Ditto.
1978         (gimple_gen_one_value_profiler): Ditto.
1979         (gimple_gen_average_profiler): Ditto.
1980         (gimple_gen_ior_profiler): Ditto.
1981         (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
1982         (gimple_gen_ic_func_profiler): Call add_referenced_var.
1983         * tree-mudflap.c (execute_mudflap_function_ops): Call
1984         add_referenced_var.
1985
1986 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1987
1988         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
1989         don't set SSA_NAME_DEF_STMT that has been already set by
1990         gimple_build_assign_with_ops.
1991         (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
1992         vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
1993         Likewise.
1994
1995         * tree.h (avoid_folding_inline_builtin): New prototype.
1996         * builtins.c (avoid_folding_inline_builtin): No longer static.
1997         * gimple-fold.c (gimple_fold_builtin): Give up if
1998         avoid_folding_inline_builtin returns true.
1999
2000 2011-10-06  Richard Guenther  <rguenther@suse.de>
2001
2002         * tree-vect-generic.c (vector_element): Look at previous
2003         generated results.
2004
2005 2011-10-06  David Edelsohn  <dje.gcc@gmail.com>
2006
2007         PR target/39950
2008         * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2009         __powerpc__, __PPC__, __unix__.
2010
2011 2011-10-06  Michael Matz  <matz@suse.de>
2012
2013         * i386/i386.opt (recip_mask, recip_mask_explicit,
2014         x_recip_mask_explicit): New variables and cl_target member.
2015         (mrecip=): New option.
2016         * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
2017         RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
2018         (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
2019         TARGET_RECIP_VEC_SQRT): New tests.
2020         * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
2021         (sqrt<mode>2): Check TARGET_RECIP_SQRT.
2022         * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
2023         (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
2024         * i386/i386.c (ix86_option_override_internal): Set recip_mask
2025         for -mrecip and -mrecip=options.
2026         (ix86_function_specific_save): Save recip_mask_explicit.
2027         (ix86_function_specific_restore): Restore recip_mask_explicit.
2028
2029         * doc/invoke.texi (ix86 Options): Document the new option.
2030
2031 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2032
2033         PR target/49049
2034         * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2035
2036 2011-10-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
2037
2038         PR target/50305
2039         * config/arm/arm.c (arm_legitimize_reload_address): Recognize
2040         output of a previous pass through legitimize_reload_address.
2041         Do not attempt to optimize addresses if the base register is
2042         equivalent to a constant.
2043
2044 2011-10-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2045
2046         * function.c (thread_prologue_and_epilogue_insns): Mark
2047         last_bb_active as possibly unused.  It is unused for targets which
2048         do neither have "return" nor "simple_return" expanders.
2049
2050 2011-10-06  Richard Guenther  <rguenther@suse.de>
2051
2052         * fold-const.c (fold_ternary_loc): Also fold non-constant
2053         vector CONSTRUCTORs.  Make more efficient.
2054         * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
2055         (cprop_into_stmt): Don't propagate into virtual operands.
2056         (optimize_stmt): Really dump original statement.
2057
2058 2011-10-06  Nick Clifton  <nickc@redhat.com>
2059
2060         * config/rx/rx.md (smin3): Revert previous delta.
2061
2062 2011-10-06  Richard Guenther  <rguenther@suse.de>
2063
2064         PR tree-optimization/38884
2065         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2066         reads from aggregate SSA names.
2067
2068 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2069
2070         * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
2071         argument, truncate it at the beginning instead of allocating there
2072         and freeing at the end.
2073         (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
2074         pass its address to vect_pattern_recog_1.
2075
2076 2011-10-05  David S. Miller  <davem@davemloft.net>
2077
2078         * config/sparc/sparc.opt (POPC): New option.
2079         * doc/invoke.texi: Document it.
2080         * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
2081         default on Niagara-2 and later.
2082         * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2083         * config/sparc/sparc.md (SIDI): New mode iterator.
2084         (ffsdi2): Delete commented out pattern and comments.
2085         (popcount<mode>2, clz<mode>2): New expanders.
2086         (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
2087         *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
2088
2089 2011-10-06  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2090
2091         PR middle-end/50607
2092         * c-tree.h (c_expr_t): New typedef for struct c_expr.
2093         (C_EXPR_APPEND): New macro.
2094         * c-parser.c (c_parser_get_builtin_args): Preserve
2095         original_tree_code of c_expr structure.
2096         (c_parser_postfix_expression): Adjust to the new function.
2097
2098 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2099
2100         * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2101         if profiling after the prologue.
2102
2103 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2104
2105         PR tree-optimization/50613
2106         * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
2107         operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
2108         and if it is neither that not SSA_NAME, give up.
2109
2110 2011-10-05  Richard Henderson  <rth@redhat.com>
2111
2112         * tree-vect-generic.c (vector_element): Never fail.  Use
2113         build_zero_cst.  Tidy up type references.
2114         (lower_vec_shuffle): Never fail.  Mask shuffle indicies.  Reduce
2115         code duplication.  Do update_stmt here ...
2116         (expand_vector_operations_1): ... not here.
2117
2118         * config/i386/i386.c (ix86_expand_vshuffle): Never fail.  Handle
2119         TARGET_XOP.  Fix pshufb constant vector creation.  Reduce code
2120         duplication.  Handle V2DI without SSE4.1.
2121         * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
2122         * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
2123
2124 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2125
2126         * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2127         of "found".  Simplify return value calculation.
2128         (distance_agu_use): Ditto.
2129
2130 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2131
2132         PR bootstrap/50621
2133         * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
2134         if the function was not shrink-wrapped.
2135         (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
2136         to an insn.
2137         * function.c (thread_prologue_and_epilogue_insns): Make sure the
2138         shrink_wrapped flag is set even if there is no dump file.
2139
2140 2011-10-05  DJ Delorie  <dj@redhat.com>
2141             Nick Clifton  <nickc@redhat.com>
2142
2143         * config/rx/rx.opt (mpid): Define.
2144         * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
2145         (MULTILIB_DIRNAMES): Add pid.
2146         * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
2147         (rx_num_interrupt_regs): New variable.
2148         (rx_gp_base_regnum): New function.  Returns the number of the
2149         small data area register.
2150         (rx_pid_base_regnum): New function.  Returns the number of the pid
2151         base register.
2152         (rx_decl_for_addr): New function.  Returns the symbolic part of a MEM.
2153         (rx_pid_data_operand): New function.  Returns whether an object is
2154         in the position independent data area.
2155         (rx_legitimize_address): New function.  Puts undecided PID
2156         objects in the PID data area.
2157         (rx_is_legitimate_address): Add support for PID operands.
2158         (rx_print_operand_address): Likewise.
2159         (rx_print_operand): Likewise.
2160         (rx_maybe_pidify_operand): New function.  Determine if an operand
2161         is suitable for PID addressing.
2162         (rx_gen_move_template): Add PID support.
2163         (rx_conditional_register_usage): Likewise.
2164         (rx_option_override): Initialise rx_num_interrupt_regs.
2165         (rx_is_legitimate_constant): Add support for PID constants.
2166         (TARGET_LEGITIMIZE_ADDRESS): Define.
2167         * config/rx/constraints.md (Rpid): Define.
2168         (Rpda): Define.
2169         * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2170         (tablejump): Add PID support.
2171         (mov<>): Likewise.
2172         (mov<>_internal): Likewise.
2173         (addsi3): Convert to an expander.  Add PID support.
2174         (pid_addr): New pattern.
2175         * config/rx/rx.h (CPP_SPEC): Define.
2176         (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
2177         (CASE_VECTOR_PC_RELATIVE): Define.
2178         (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
2179         * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
2180         * doc/invoke.texi (RX Options): Document -mpid command line option.
2181
2182 2011-10-05  Richard Guenther  <rguenther@suse.de>
2183
2184         PR tree-optimization/38885
2185         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2186         from constants.
2187
2188 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2189
2190         * doc/invoke.texi (-fshrink-wrap): Document.
2191         * opts.c (default_options_table): Add it.
2192         * common.opt (fshrink-wrap): Add.
2193         * function.c (emit_return_into_block): Remove useless declaration.
2194         (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
2195         requires_stack_frame_p, gen_return_pattern): New static functions.
2196         (emit_return_into_block): New arg simple_p.  All callers changed.
2197         Use gen_return_pattern.
2198         (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
2199         * config/i386/i386.md (return): Expand into a simple_return.
2200         (simple_return): New expander):
2201         (simple_return_internal, simple_return_internal_long,
2202         simple_return_pop_internal_long, simple_return_indirect_internal):
2203         Renamed from return_internal, return_internal_long,
2204         return_pop_internal_long and return_indirect_internal; changed to use
2205         simple_return.
2206         * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2207         simple returns.
2208         (ix86_pad_returns): Likewise.
2209         * function.h (struct rtl_data): Add member shrink_wrapped.
2210         * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
2211         are not jumps or sibcalls can't be compared.
2212
2213 2011-10-05  Richard Guenther  <rguenther@suse.de>
2214
2215         * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2216         vector type.
2217         (simplify_unary_expression): Handle BIT_FIELD_REFs.
2218         (try_to_simplify): Handle BIT_FIELD_REFs.
2219
2220 2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
2221
2222         * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
2223         * config/avr/avr.c (avr_out_addto_sp): New function.
2224         (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
2225         * config/avr/avr.md (adjust_len): Add "addto_sp".
2226         (*movhi_sp): Remove insn.
2227         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
2228
2229 2011-10-05  Richard Guenther  <rguenther@suse.de>
2230
2231         * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
2232         with an embedded expression valueize and fold that as well.
2233         * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
2234         results from gimple_fold_stmt_to_constant_1.
2235
2236 2011-10-05  Nick Clifton  <nickc@redhat.com>
2237
2238         * config/rx/rx.md (tablejump): Add missing label.
2239         (adddi3_internal): Mark operand 0 as early-clobbered.
2240         (smaxsi3): Revert previous delta.
2241         (adc_internal): Fix whitespace in generated asm.
2242         (adc_flags): Likewise.
2243
2244 2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2245
2246         * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2247         with the new widening_optab_handler.
2248
2249 2011-10-05  Richard Guenther  <rguenther@suse.de>
2250
2251         PR tree-optimization/50609
2252         * gimple-fold.c (fold_array_ctor_reference): Also handle
2253         vector typed constructors.
2254         (fold_ctor_reference): Dispatch to fold_array_ctor_reference
2255         for vector typed constructors.
2256
2257 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2258
2259         * config/i386/i386.c (ix86_emit_binop): New static function.
2260         (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
2261         instructions.
2262         (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2263
2264 2011-10-04  David S. Miller  <davem@davemloft.net>
2265
2266         * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
2267         UNSPEC_XMUL): New unspecs.
2268         (muldi3_v8plus): Use output_v8plus_mult.
2269         (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
2270         New VIS 3.0 combiner patterns.
2271         (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
2272         fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
2273         umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
2274         xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
2275         builtins patterns.
2276         * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
2277         (output_v8plus_mult): New function.
2278         * config/sparc/sparc-protos.h: Declare it.
2279         * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
2280         __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
2281         __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
2282         * doc/extend.texi: Document new builtins.
2283
2284 2011-10-04  Richard Henderson  <rth@redhat.com>
2285
2286         * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2287         Avoid save_expr unless two_arguments.
2288
2289 2011-10-04  Ozkan Sezer  <sezeroz@gmail.com>
2290
2291         * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2292         * config/i386/mingw32.h (CPP_SPEC): Likewise.
2293
2294 2011-10-04  David S. Miller  <davem@davemloft.net>
2295
2296         * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2297         under Linux.
2298
2299 2011-10-04  Jakub Jelinek  <jakub@redhat.com>
2300
2301         PR tree-optimization/50604
2302         * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
2303         fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
2304         last argument to memcpy has size_type_node type instead of ssizetype.
2305         * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
2306         instead of TREE_TYPE (len) as type for newlen.
2307
2308         PR tree-optimization/50522
2309         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2310         TYPE_RESTRICT.
2311         (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
2312         unconditionally.
2313
2314         * fold-const.c (fold_unary_loc): Don't optimize
2315         POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
2316         casting the inner pointer if it isn't TYPE_RESTRICT.
2317         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
2318         casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
2319
2320 2011-10-04  Joseph Myers  <joseph@codesourcery.com>
2321
2322         * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
2323
2324 2011-10-04  Jan Hubicka  <jh@suse.cz>
2325
2326         * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
2327         * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
2328         * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
2329         * lto-cgraph.c (order_base): New static var.
2330         (lto_output_node): Stream in order.
2331         (lto_output_varpool_node): Stream out order.
2332         (input_node): Stream in order.
2333         (input_varpool_node): Stream out order.
2334         (input_cgraph_1): Initialize order base; update call of
2335         lto_input_toplevel_asms.
2336
2337 2011-10-04  Georg-Johann Lay  <avr@gjlay.de>
2338
2339         PR target/50566
2340         * config/avr/avr-protos.h (avr_legitimize_reload_address): New
2341         prototype.
2342         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
2343         from here...
2344         * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
2345         function.  Log if avr_log.legitimize_reload_address.
2346
2347 2011-10-04  Eric Botcazou  <ebotcazou@adacore.com>
2348
2349         * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
2350
2351 2011-10-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2352
2353         * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
2354         variables.  Fix second operand of DR.  Swap inputs for sdiv_qrnnd.
2355
2356 2011-10-03  David S. Miller  <davem@davemloft.net>
2357
2358         * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
2359         GSR_REG an input operand to UNSPEC instead of a parallel USE.
2360         (faligndata<V64I:mode>_vis): Likewise and use DI mode.
2361         (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
2362         Reference GSR_REG in DI mode, simplify convoluted expressions by using
2363         zero_extract.
2364         (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
2365
2366 2011-10-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
2367
2368         * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
2369
2370 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
2371             Ian Lance Taylor  <iant@google.com>
2372
2373         * godump.c (go_output_typedef): Support printing enum values that
2374         don't fit in a signed HOST_WIDE_INT.
2375
2376 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
2377
2378         * config/cris/cris.c (cris_output_addr_const_extra): Make static.
2379         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
2380         * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
2381         * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
2382
2383 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
2384
2385         * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
2386         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
2387         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
2388         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
2389
2390 2011-10-03  Steve Ellcey  <sje@cup.hp.com>
2391
2392         PR target/49967
2393         * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
2394         (gcc_cv_ld_static_option): Ditto.
2395         (gcc_cv_ld_dynamic_option): Ditto.
2396         * configure: Regenerate.
2397
2398 2011-10-03  David S. Miller  <davem@davemloft.net>
2399
2400         * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
2401         and 'si' patterns which describe the GSR changes explicitly in the
2402         RTL using zero_extract.
2403         (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
2404
2405         * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
2406         GSR_REG in a USE, since it's now a true arg to the UNSPEC.
2407
2408 2011-10-03  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2409
2410         * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
2411         if given expression can be expanded by the target.
2412         (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
2413         using target vector instructions.
2414         * optabs.h: New optab vshuffle.
2415         (expand_vec_shuffle_expr_p): New prototype.
2416         (expand_vec_shuffle_expr): New prototype.
2417         (vshuffle_optab): New optab.
2418         * genopinit.c: Adjust to support vecshuffle.
2419         * c-tree.h (c_build_vec_shuffle_expr): New prototype.
2420         * expr.c (expand_expr_real_2): Adjust.
2421         * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
2422         recognizing the cases of two and three arguments.
2423         (convert_arguments) (build_binary_op)
2424         (scalar_to_vector) (build_array_ref): Spurious whitespace.
2425         * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
2426         * tree.def: New tree code VEC_SHUFFLE_EXPR.
2427         * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
2428         * tree-vect-generic.c (vector_element): New function. Returns an
2429         element of the vector at the given position.
2430         (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
2431         by the backend or expand an expression piecewise.
2432         (expand_vector_operations_1): Adjusted.
2433         (gate_expand_vector_operations_noop): New gate function.
2434         * Makefile.in (tree-vect-generic.o): New include.
2435         * gimple.c (get_gimple_rhs_num_ops): Adjust.
2436         * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
2437         * passes.c: Move veclower down.
2438         * tree-pretty-print.c (dump_generic_node): Recognize
2439         VEC_SHUFFLE_EXPR as valid expression.
2440         * c-parser.c (c_parser_get_builtin_args): Helper function for the
2441         builtins with variable number of arguments.
2442         (c_parser_postfix_expression): Use a new helper function for
2443         RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
2444         * tree-ssa-operands: Adjust.
2445         * c-family/c-common.c: New __builtin_shuffle keyword.
2446         * c-family/c-common.h: New __builtin_shuffle keyword.
2447         * gcc/doc/extend.texi: Adjust.
2448
2449         * gcc/config/i386/sse.md: (sseshuffint) New mode_attr.  Correspondence
2450         between the vector and the type of the mask when shuffling.
2451         (vecshuffle<mode>): New expansion.
2452         * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
2453         * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
2454         (ix86_vectorize_builtin_vec_perm_ok): Adjust.
2455
2456 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
2457
2458         PR tree-optimization/50587
2459         * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
2460         arg0 is not a SSA_NAME.
2461
2462 2011-10-03  Richard Sandiford  <rdsandiford@googlemail.com>
2463
2464         * ipa-inline-analysis.c (MAX_TIME): Update comment.
2465
2466 2011-10-02  Richard Henderson  <rth@redhat.com>
2467             David S. Miller  <davem@davemloft.net>
2468
2469         * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
2470         conditional insn type setting, we always emit a shift.
2471         (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
2472         (*lshrsi3_extend): Rename to *lshrsi3_extend1.
2473         * config/sparc/predicates.md (const_one_operand): Delete.
2474
2475 2011-10-02  Gerald Pfeifer  <gerald@pfeifer.com>
2476
2477         * invoke.texi (SPARC Options): Refer to GNU/Linux.
2478
2479 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
2480
2481         * config/mips/mips.c (mips_frame_barrier): New function.
2482         (mips_expand_prologue): Call it after allocating stack space.
2483         (mips_deallocate_stack): New function.
2484         (mips_expand_epilogue): Call mips_frame_barrier and
2485         mips_deallocate_stack.
2486
2487 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
2488
2489         PR target/49696
2490         * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
2491         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
2492         (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
2493
2494 2011-10-02  Jan Hubicka  <jh@suse.cz>
2495
2496         * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
2497
2498         * cgraphunit.c (ipa_passes): Remove unrechable nodes.
2499         * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
2500         * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
2501         functions are reachable when address is taken.
2502         * tree-sra.c (modify_function): Free dominance info.
2503
2504 2011-10-02  Jan Hubicka  <jh@suse.cz>
2505
2506         * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
2507
2508         * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
2509         (reset_inline_summary): New function.
2510         (compute_inline_parameters, inline_node_removal_hook,
2511         inline_edge_removal_hook): Use it.
2512         (inline_free_summary): Reset holders correctly.
2513         (inline_generate_summary): Free summary before computing it.
2514
2515 2011-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
2516
2517         PR preprocessor/36819
2518         * incpath.c (merge_include_chains): Call free_path on
2519         heads[QUOTE] and tails[QUOTE].
2520
2521 2011-10-02  Jan Hubicka  <jh@suse.cz>
2522
2523         PR lto/47247
2524         * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
2525         when resolution is already availbale from plugin.
2526         (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
2527         * cgraph.c (ld_plugin_symbol_resolution): Add
2528         prevailing_def_ironly_exp.
2529         * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
2530         * ipa.c (varpool_externally_visible_p): IRONLY variables are never
2531         externally visible.
2532         * varasm.c (resolution_to_local_definition_p): Add
2533         LDPR_PREVAILING_DEF_IRONLY_EXP.
2534         (resolution_local_p): Likewise.
2535
2536 2011-10-01  David S. Miller  <davem@davemloft.net>
2537
2538         * config/sparc/sparc.opt (VIS3): New option.
2539         * doc/invoke.texi: Document it.
2540         * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
2541         not capable of such instructions.
2542         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2543         to 0x300 when TARGET_VIS3.
2544         * config/sparc/sparc-modes.def: Create 16-byte vector modes.
2545         * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
2546         UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
2547         (V64N8, VASS): New mode iterators.
2548         (vis3_shift, vis3_addsub_ss): New code iterators.
2549         (vbits, vconstr): New mode attributes.
2550         (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
2551         (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
2552         fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
2553         fmean16_vis, fpadd64_vis, fpsub64_vis,
2554         <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
2555         VIS 3.0 instruction patterns.
2556         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
2557         default when targetting capable cpus.  TARGET_VIS3 implies
2558         TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
2559         (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
2560         (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
2561         is ignored.
2562         * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
2563         __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
2564         __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
2565         __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
2566         __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
2567         __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
2568         __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
2569         __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
2570         * doc/extend.texi: Document new VIS 3.0 builtins.
2571
2572 2011-10-01  Eric Botcazou  <ebotcazou@adacore.com>
2573
2574         * ira-color.c (assign_hard_reg): Fix typo.
2575
2576 2011-09-30  H.J. Lu  <hongjiu.lu@intel.com>
2577
2578         * doc/extend.texi: Add missing ','.
2579
2580 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2581
2582         * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
2583         Enable -fmodulo-sched at -O2 and above.
2584         * config/c6x/c6x.md (doloop_end): New expander.
2585         (mvilc, sploop, spkernel, loop_end): New patterns.
2586         (loop_end with memory destination splitter): New.
2587         * config/c6x/c6x.c: Include "hw-doloop.h".
2588         (enum unitreqs): New.
2589         (unit_req_table): New typedef.
2590         (unit_reqs): New static variable.
2591         (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
2592         res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
2593         hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
2594         hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
2595         (struct c6x_sched_context): New member last_scheduled_iter0.
2596         (init_sched_state): Initialize it.
2597         (c6x_variable_issue): Update it.
2598         (sploop_max_uid_iter0): New static variable.
2599         (c6x_sched_reorder_1): Be careful about issuing sploop.
2600         (c6x_reorg): Call c6x_hwlooops before the final schedule.
2601
2602 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
2603
2604         PR target/50566
2605         * config/avr/avr-protos.h (avr_log_t): New field address_cost.
2606         * config/avr/avr.c (avr_address_cost): Use it.
2607         * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2608         (avr_log_vadump): Unknown %-codes finish printing.
2609
2610 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
2611
2612         PR inline-asm/50571
2613         * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
2614         input constraints allow mem and not reg, pass true instead of
2615         false as second argument to maybe_fold_reference.
2616
2617         PR tree-optimization/46309
2618         * fold-const.c (make_range, merge_ranges): Remove prototypes.
2619         (make_range_step): New function.
2620         (make_range): Use it.
2621         * tree.h (make_range_step): New prototypes.
2622         * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
2623         * tree-ssa-reassoc.c: Include diagnostic-core.h.
2624         (struct range_entry): New type.
2625         (init_range_entry, range_entry_cmp, update_range_test,
2626         optimize_range_tests): New functions.
2627         (reassociate_bb): Call optimize_range_tests.
2628
2629 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
2630             Richard Guenther  <rguenther@suse.de>
2631
2632         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
2633         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
2634         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.  Fix
2635         handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
2636         (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
2637         BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
2638
2639 2011-09-30  Jan Beulich  <jbeulich@suse.com>
2640
2641         * lto-cgraph.c (output_cgraph): Remove processing of
2642         'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
2643         (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
2644         lto_input_toplevel_asms() instead.
2645         * lto-section-in.c (lto_section_name): Add "asm" entry.
2646         * lto-streamer-in.c (lto_input_toplevel_asms): New.
2647         * lto-streamer-out.c (lto_output_toplevel_asms): New.
2648         * lto-streamer.h (LTO_minor_version): Bump.
2649         (enum lto_section_type): Add LTO_section_asm.
2650         (struct lto_asm_header): New.
2651         (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
2652         * tree-streamer.h (streamer_write_string_cst): Declare.
2653         * tree-streamer-out.c (write_string_cst): Rename to
2654         streamer_write_string_cst and make global. Handle incoming string
2655         being NULL.
2656         (streamer_write_tree_header): Adjust call to renamed function.
2657
2658 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2659
2660         * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
2661         modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
2662         modulo_last_stage): New static variables.
2663         (set_modulo_params, discard_delay_pairs_above): New functions.
2664         (struct delay_pair): New member stages.
2665         (htab_i2_traverse, htab_i1_traverse): New static functions.
2666         (record_delay_slot_pair): New arg stages.  All callers changed.
2667         Record it.
2668         (pair_delay): Take stages into account.
2669         (add_delay_dependencies): Don't do so for stage pairs.
2670         (struct sched_block_state): New member modulo_epilogue.
2671         (save_backtrack_point): Don't set SHADOW_P for stage pairs.
2672         (unschedule_insns_until): Decrease modulo_insns_scheduled.
2673         Set HARD_DEP without using or.
2674         (resolve_dependencies): New static function.
2675         (prune_ready_list): New arg modulo_epilogue_p.  All callers changed.
2676         If it is true, allow only insns with INSN_EXACT_TICK set.
2677         (schedule_block): Return bool, always true for normal scheduling,
2678         true or false depending on modulo scheduling success otherwise.
2679         Add bookkeeping for modulo scheduling, and call resolve_dependencies
2680         on everything left over after a modulo schedule.
2681         (haifa_sched_init): Remove check_cfg call.  Clear modulo_ii.
2682         * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
2683         declarations.
2684         (set_modulo_params, discard_delay_pairs_above): Declare.
2685         * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
2686         * doc/invoke.texi (--param): Document it.
2687
2688         * sched-ebb.c (schedule_ebb): No longer static.  Remove declaration.
2689         New arg modulo_scheduling.  All callers changed.  Move note handling
2690         code here from schedule_ebbs.
2691         (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
2692         out of schedule_ebbs.
2693         (schedule_ebbs): Call them.  Remove note handling code moved to
2694         schedule_ebb.
2695         * sched-int.h (schedule_ebb, schedule_ebbs_init,
2696         schedule_ebbs_finish): Declare.
2697
2698 2011-09-30  Richard Guenther  <rguenther@suse.de>
2699
2700         PR middle-end/50574
2701         * tree-cfg.c (verify_gimple_comparison): Compare component
2702         mode sizes for vector comparisons.
2703
2704 2011-09-30  Revital Eres  <revital.eres@linaro.org>
2705
2706         * ddg.c (autoinc_var_is_used_p): New function.
2707         (create_ddg_dep_from_intra_loop_link,
2708         add_cross_iteration_register_deps): Call it.
2709         * ddg.h (autoinc_var_is_used_p): Declare.
2710         * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
2711         (sms_schedule): Handle instructions with REG_INC.
2712
2713 2011-09-30  Revital Eres  <revital.eres@linaro.org>
2714
2715         * modulo-sched.c (generate_reg_moves): Skip instructions that
2716         do not set a register and verify no regmoves are created for
2717         !single_set instructions.
2718
2719 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2720
2721         * hw-doloop.c (scan_loop): Compute register usage only for non-debug
2722         insns.
2723
2724 2011-09-30  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
2725
2726         PR target/50099
2727         * config/arm/iterators.md (qhs_zextenddi_cstr): New.
2728         (qhs_zextenddi_op): New.
2729         * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
2730         * config/arm/predicates.md ("arm_extendqisi_mem_op"):
2731         Distinguish between ARM and Thumb2 states.
2732
2733 2011-09-30  David S. Miller  <davem@davemloft.net>
2734
2735         * config/sparc/sparc.opt (VIS2): New option.
2736         * doc/invoke.texi: Document it.
2737         * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
2738         UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
2739         UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
2740         (define_attr type): New insn type 'edgen'.
2741         (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
2742         edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
2743         edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
2744         patterns.
2745         * niagara.md: Handle edgen.
2746         * niagara2.md: Likewise.
2747         * ultra1_2.md: Likewise.
2748         * ultra3.md: Likewise.
2749         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2750         to 0x200 when TARGET_VIS2.
2751         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
2752         default when targetting capable cpus.  TARGET_VIS2 implies
2753         TARGET_VIS, clear and it when TARGET_FPU is disabled.
2754         (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
2755         (sparc_expand_builtin): Fix predicate indexing when builtin returns
2756         void.
2757         (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
2758         * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
2759         __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
2760         __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
2761         __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
2762         * doc/extend.texi: Document new VIS 2.0 builtins.
2763
2764 2011-09-29  Nick Clifton  <nickc@redhat.com>
2765             Bernd Schmidt  <bernds@codesourcery.com>
2766
2767         * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
2768         * config/frv/frvend.c: Likewise.
2769         * config/frv/frv.c (frv_function_prologue): Move misplaced
2770         CALL_ARG_LOCATION notes back to their proper locations.
2771
2772 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2773
2774         PR target/50566
2775         * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
2776         * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
2777         from avr_rtx_costs.
2778         (avr_legitimate_address_p): Use avr_edump to print log information
2779         filtered by avr_log.
2780         (extra_constraint_Q): Ditto.
2781         (avr_legitimize_address): Ditto.
2782         (avr_rtx_costs): Ditto.  Rewrite as wrapper for avr_rtx_costs_1.
2783         (final_prescan_insn): Use avr_log.rtx_costs as filter.
2784
2785 2011-09-29  Richard Sandiford  <richard.sandiford@linaro.org>
2786
2787         * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
2788         * config/arm/arm.h (MODES_TIEABLE_P): Use it.
2789         * config/arm/arm.c (arm_modes_tieable_p): New function.  Allow
2790         NEON vector and structure modes to be tied.
2791
2792 2011-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2793
2794         * graphite-scop-detection.c (make_close_phi_nodes_unique):  New
2795         forward declaration.
2796         (remove_duplicate_close_phi): Detect and repair creation of
2797         duplicate close-phis for a containing loop.
2798
2799 2011-09-27   Andi Kleen <ak@linux.intel.com>
2800
2801         * gcc.c (get_local_tick). Rename to get_random_number.  Read from
2802         /dev/urandom.  Add getpid call.
2803         (compare_debug_dump_opt_spec_function): Drop getpid call.
2804
2805 2011-09-26   Andi Kleen <ak@linux.intel.com>
2806
2807         * toplev.c (init_local_tick): Try reading random seed
2808         from /dev/urandom.
2809
2810 2011-09-26   Andi Kleen <ak@linux.intel.com>
2811
2812         * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
2813         * lto-streamer.c (lto_get_section_name): Remove crc32_string.
2814         Handle numerical random seed.
2815         * lto-streamer.h (lto_file_decl_data): Change id to
2816         unsigned HOST_WIDE_INT.
2817         * toplev.c (random_seed): Add.
2818         (init_random_seed): Change for numerical random seed.
2819         (get_random_seed): Return as HOST_WIDE_INT.
2820         (set_random_seed): Crc32 existing string.
2821         * toplev.h (get_random_seed): Change to numercal return.
2822         * tree.c (get_file_function_name): Remove CRC. Handle
2823         numerical random seed.
2824
2825 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2826
2827         PR target/50566
2828         * config.gcc (extra_objs): Add avr-log.o for $target in:
2829         avr-*-rtems*, avr-*-*.
2830         * config/avr/t-avr (avr-log.o): New rule to compile...
2831         * config/avr/avr-log.c: ...this new file.
2832         * config/avr/avr.opt (mlog=): New option.
2833         * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
2834         (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
2835         (avr_log_set_avr_log): New prototype.
2836         (avr_log_t): New typedef.
2837         (avr_log): New declaration.
2838         * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
2839
2840 2011-09-29  Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2841
2842         * expr.c (do_store_flag): Expand vector comparison by
2843         building an appropriate VEC_COND_EXPR.
2844         * c-typeck.c (build_binary_op): Typecheck vector comparisons.
2845         (c_objc_common_truthvalue_conversion): Adjust.
2846         * tree-vect-generic.c (do_compare): Helper function.
2847         (expand_vector_comparison): Check if hardware supports
2848         vector comparison of the given type or expand vector piecewise.
2849         (expand_vector_operation): Treat comparison as binary
2850         operation of vector type.
2851         (expand_vector_operations_1): Adjust.
2852
2853 2011-09-29  Richard Guenther  <rguenther@suse.de>
2854
2855         * tree.c (build_opaque_vector_type): Make opaque vectors
2856         variant types of the corresponding non-opaque type.  Make
2857         sure to share opaque vector types properly.
2858
2859 2011-09-29  David S. Miller  <davem@davemloft.net>
2860
2861         * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
2862         UNSPEC_ARRAY32): New unspec.
2863         (define_attr type): New type 'array'.
2864         (array{8,16,32}<P:mode>_vis): New patterns.
2865         * config/sparc/ultra1_2.md: Add reservations for 'array'.
2866         * config/sparc/ultra3.md: Likewise.
2867         * config/sparc/niagara.md: Likewise.
2868         * config/sparc/niagara2.md: Likewise.
2869         * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
2870         array builtins.
2871         * config/sparc/visintrin.h (__vis_array8, __vis_array16,
2872         __vis_array32): New.
2873         * doc/extend.texi: Document new VIS builtins.
2874
2875         * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
2876         (VIS pixel-compare insn): Just use <gcond:name>.
2877
2878         * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
2879         code iterator used, so just use <code>.  There are two mode iterators
2880         so explicitly use <GCM:gcm_name>.
2881
2882 2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>
2883
2884         * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
2885         Darwin >= 9.
2886
2887 2011-09-28  David S. Miller  <davem@davemloft.net>
2888
2889         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
2890         UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
2891         (UNSPEC_FCMP): New unspec.
2892         (gcond): New code iterator.
2893         (gcond_name): New code attr.
2894         (GCM): New mode iterator.
2895         (gcm_name): New mode attr.
2896         (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
2897
2898 2011-09-28  Oleg Endo  <oleg.endo@t-online.de>
2899
2900         PR target/49486
2901         * config/sh/sh.md (negdi2): Move expansion into split to
2902         allow more combination options.  Add T_REG clobber.
2903         (abssi2): New expander.
2904         (*negdi2, *abssi2, *negabssi2): New insns.
2905         (cneg): Change from insn to insn_and_split.  Rename to
2906         negsi_cond.  Add alternative for non-SH4.
2907
2908 2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
2909
2910         * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
2911         (neon_move_hi_quad_<mode>): Likewise.
2912         (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
2913
2914 2011-09-28  Nick Clifton  <nickc@redhat.com>
2915
2916         * config/rx/predicates.md (rx_minmax_operand): New predicate.
2917         Accepts immediates and a restricted subset of MEMs.
2918         * config/rx/rx.md (int_modes): New iterator.
2919         (smaxsi3, sminsi3): Delete and replace with...
2920         (smax<int_mode>3, smin<int_mode>3): New patterns.
2921         (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
2922
2923 2011-09-28  Richard Guenther  <rguenther@suse.de>
2924
2925         PR middle-end/50460
2926         * fold-const.c (try_move_mult_to_index): Handle &a.array the
2927         same as &a.array[0].
2928
2929 2011-09-28  Kai Tietz  <ktietz@redhat.com>
2930
2931         * configure.ac: Add test for new section attribute
2932         specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
2933         * config.in: Regenerated.
2934         * configure: Regenerated.
2935         * config/i386/winnt.c (i386_pe_asm_named_section): Emit
2936         new section flag "e" for excluded sections, if supported.
2937         Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
2938
2939 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2940
2941         * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
2942         throughout file.
2943
2944 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2945
2946         * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
2947         throughout file.
2948
2949 2011-09-27  Sriraman Tallam  <tmsriram@google.com>
2950
2951         * output.h (SECTION_EXCLUDE): New macro.
2952         * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
2953
2954 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2955
2956         * fwprop.c (forward_propagate_and_simplify): After checking
2957         reg/subreg combinations, check whether the modes are the same.
2958
2959 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
2960             Richard Sandiford  <rdsandiford@googlemail.com>
2961
2962         * config/mips/mips.c (mips_add_cfa_restore): New function.
2963         (mips16e_save_restore_reg): Use it.
2964         (mips_restore_reg): Likewise.  Split double FPRs for
2965         REG_CFA_RESTORE notes.
2966
2967 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2968
2969         PR middle-end/50386
2970         PR middle-end/50326
2971         * tree-sra.c (build_ref_for_model): Use the type of the field as
2972         the type of the COMPONENT_REF.
2973
2974 2011-09-27  Jeff Law  <law@redhat.com>
2975
2976         * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument.  Scale
2977         non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
2978         (find_if_case_1): Use the probability of the THEN clause when
2979         determining if speculation is profitable.
2980         (find_if_case_2): Similarly for the ELSE clause.
2981
2982 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
2983
2984         * common.opt: Add -foptimize-strlen option.
2985         * Makefile.in (OBJS): Add tree-ssa-strlen.o.
2986         (tree-sssa-strlen.o): Add dependencies.
2987         * opts.c (default_options_table): Enable -foptimize-strlen
2988         by default at -O2 if not -Os.
2989         * passes.c (init_optimization_passes): Add pass_strlen
2990         after pass_object_sizes.
2991         * timevar.def (TV_TREE_STRLEN): New timevar.
2992         * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
2993         * tree-pass.h (pass_strlen): Declare.
2994         * tree-ssa-strlen.c: New file.
2995         * c-decl.c (merge_decls): If compatible stpcpy prototype
2996         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
2997
2998 2011-09-27  Tom de Vries  <tom@codesourcery.com>
2999
3000         PR middle-end/43864
3001         * tree-ssa-tail-merge.c: New file.
3002         (struct same_succ_def): Define.
3003         (same_succ, const_same_succ): New typedef.
3004         (struct bb_cluster_def): Define.
3005         (bb_cluster, const_bb_cluster): New typedef.
3006         (struct aux_bb_info): Define.
3007         (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
3008         (gvn_uses_equal): New function.
3009         (same_succ_print, same_succ_print_traverse, update_dep_bb)
3010         (stmt_update_dep_bb, local_def, same_succ_hash)
3011         (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
3012         (same_succ_reset): New function.
3013         (same_succ_htab, same_succ_edge_flags)
3014         (deleted_bbs, deleted_bb_preds): New var.
3015         (debug_same_succ): New function.
3016         (worklist): New var.
3017         (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
3018         (init_worklist, delete_worklist, delete_basic_block_same_succ)
3019         (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
3020         (print_cluster, debug_cluster, update_rep_bb)
3021         (add_bb_to_cluster, new_cluster, delete_cluster): New function.
3022         (all_clusters): New var.
3023         (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
3024         (merge_clusters, set_cluster): New function.
3025         (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
3026         (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
3027         (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
3028         (find_clusters_1, find_clusters): New function.
3029         (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
3030         (update_bbs): New var.
3031         (apply_clusters): New function.
3032         (update_debug_stmt, update_debug_stmts): New function.
3033         (tail_merge_optimize): New function.
3034         tree-pass.h (tail_merge_optimize): Declare.
3035         * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
3036         * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
3037         (tree-ssa-tail-merge.o): New rule.
3038         * opts.c (default_options_table): Set OPT_ftree_tail_merge by
3039         default at OPT_LEVELS_2_PLUS.
3040         * tree-ssa-sccvn.c (vn_valueize): Move to ...
3041         * tree-ssa-sccvn.h (vn_valueize): Here.
3042         * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
3043         * common.opt (ftree-tail-merge): New switch.
3044         * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
3045         (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
3046         * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
3047         (-ftree-tail-merge, max-tail-merge-comparisons)
3048         (max-tail-merge-iterations): New item.
3049
3050 2011-09-27  Jan Hubicka  <jh@suse.cz>
3051
3052         * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
3053
3054 2011-09-27  Jan Hubicka  <jh@suse.cz>
3055
3056         * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
3057         parameters passed by reference; handle loads from non-SSA scalars
3058         and update comments.
3059
3060 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
3061
3062         PR rtl-optimization/50249
3063         * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
3064         instead of opnum and type.  All callers changed.  Remove useless
3065         declaration.
3066         Search forward for other reloads of the same type for the same operand
3067         using the same register; if any are found, return false.
3068         (reload_regs_reach_end_p): Same argument changes; all callers changed.
3069
3070 2011-09-27  Andi Kleen  <ak@linux.intel.com>
3071             Jan Hubicka  <jh@suse.cz>
3072
3073         * doc/invoke.texi (ffat-lto-objects): Document.
3074         * toplev.c (compile_file): Do not output assembly when doing slim lto;
3075         Output __gnu_slim_lto when doing slim lto.
3076         * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
3077         (cgraph_optimize): Return early when doing slim lto.
3078         * opts.c (finish_options): Complain about lack of linker plugin
3079         when doing slim lto.
3080         * common.opt (ffat-lto-objects): New.
3081
3082 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
3083
3084         * ipa-inline-analysis.c (predicate_probability): Avoid comparison
3085         between signed and unsigned.
3086
3087 2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
3088
3089         * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
3090         vectorization.
3091         (vectorizable_type_promotion): Likewise.
3092         (vect_analyze_stmt): Call vectorizable_type_demotion and
3093         vectorizable_type_promotion for basic blocks.
3094         (supportable_widening_operation): Don't assume loop vectorization.
3095         * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
3096         basic blocks.  Update vectorization factor for basic block
3097         vectorization.
3098         (vect_analyze_slp_instance): Allow multiple types for basic block
3099         vectorization.  Recheck unrolling factor after construction of SLP
3100         instance.
3101
3102 2011-09-27  Richard Guenther  <rguenther@suse.de>
3103
3104         * tree-object-size.c (compute_object_sizes): Fix dumping of
3105         folded statement.
3106
3107 2011-09-27  Richard Guenther  <rguenther@suse.de>
3108
3109         PR tree-optimization/50363
3110         * tree-ssa-pre.c (create_expression_by_pieces): Handle
3111         pointer conversions in POINTER_PLUS_EXPRs properly.
3112
3113 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
3114
3115         * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
3116         (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
3117         (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
3118         (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
3119         that produce subreg moves.  Define using VQX iterators.
3120
3121 2011-09-27  Georg-Johann Lay  <avr@gjlay.de>
3122
3123         * config/avr/avr.md (ashrqi3): Split alternative "n"
3124         into its remaining parts C03, C04, C05, C06, C07 and describe
3125         impact in CC by attribute "cc" appropriately.
3126         * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
3127         by digging RTX.
3128
3129 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
3130
3131         * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
3132         from 3 x MAX_MACHINE_MODE.
3133         (CONSTM1_RTX): Define.
3134         * emit-rtl.c (const_tiny_rtx): Change into array of
3135         4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
3136         (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
3137         CONSTM1_RTX.
3138         (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
3139         MODE_VECTOR_INT modes.
3140         * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
3141         Optimize if one operand is CONSTM1_RTX.
3142         * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
3143         into mask | x.
3144
3145 2011-09-26  David S. Miller  <davem@davemloft.net>
3146
3147         * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
3148         (fcmp{le,ne,gt,eq}{16,32}): Likewise.
3149         * config/sparc/visintrin.h: Update edge and pixel-compare
3150         intrinsics to return 'long' instead of 'int'.
3151         * doc/extend.texi: Update documentation to match.
3152         * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
3153         flat, allow any instruction.  Otherwise, when V9 allow parallels
3154         which consist only of sets to registers outside of %o0 to %o5.
3155         (sparc_vis_init_builtins): Update VIS builtin types for edge
3156         and pixel-compare.
3157
3158         * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
3159         is enabled, mark %gsr as global.
3160         * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
3161         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
3162
3163         * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
3164         which will now define __VIS and __VIS__ when -mvis is enabled.
3165         * config/sparc/t-sparc: Likewise.
3166         * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
3167         and add t-sparc to tmake_file for all sparc targets.
3168         * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
3169         * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
3170
3171         * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
3172         builtins for VIS vector addition and subtraction.
3173         * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
3174         __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
3175         __vis_fpsub32, __vis_fpsub32s): New.
3176         * doc/extend.texi: Document new VIS intrinsics.
3177
3178 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3179
3180         * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
3181         * config/avr/avr.c (avr_out_compare): Print shorter sequence for
3182         EQ/NE comparisons against +/-1 in the case of unused-after,
3183         non-ld-regs target.
3184
3185 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
3186
3187         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
3188         gctx.into_ssa after push_gimplify_context.
3189
3190         * gimple.c (gimple_build_call_valist): New function.
3191         * gimple.h (gimple_build_call_valist): New prototype.
3192         * tree-ssa-propagate.c (finish_update_gimple_call): New function.
3193         (update_gimple_call): Likewise.
3194         (update_call_from_tree): Use finish_update_gimple_call.
3195         * tree-ssa-propagate.h (update_gimple_call): New prototype.
3196
3197 2011-09-26  Richard Guenther  <rguenther@suse.de>
3198
3199         PR tree-optimization/50472
3200         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
3201         volatile references.
3202
3203 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
3204
3205         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
3206         * target.def: (addr_space_subset_p): Likewise.
3207
3208 2011-09-26  Tom de Vries  <tom@codesourcery.com>
3209
3210         * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
3211         * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
3212         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
3213         of new var.
3214
3215 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3216
3217         PR target/50465
3218         * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
3219         * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
3220         output_reload_insisf.
3221         (adjust_len): Set default to "no".
3222         Remove alternative "yes".  Add alternatives: "mov8", "mov16",
3223         "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
3224         "lshrhi", "ashlsi, "ashrsi", "lshrsi".
3225         (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
3226         *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
3227         *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
3228         *lshrsi3_const): Set attribute "adjust_len".
3229         * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
3230         (output_movsisf): Don't pass insn to output_reload_insisf.
3231         (adjust_insn_length): Handle new alternatives to adjust_len.
3232         Remove handling of ADJUST_LEN_YES.  Clean-up code.
3233
3234 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
3235
3236         * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
3237         may_trap_p to detect loads that may trap of fault.
3238
3239 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3240
3241         * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
3242         * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
3243         (*reload_inhi): Use it.  Adapt call to output_reload_inhi to new
3244         prototype.
3245         (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
3246         * config/avr/avr.c: Rename output_reload_insisf_1 to
3247         output_reload_in_const.
3248         (avr_popcount_each_byte): Handle SFmode, too.
3249         (output_reload_in_const): Change so it can handle HI loads, too.
3250         Use avr_popcount_each_byte to work out if scratch register must be
3251         created on the fly.
3252         (output_reload_inhi): Rewrite using output_reload_in_const and...
3253         (output_movhi): ...use it to print constants' loads.
3254         (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
3255
3256 2011-09-25  David S. Miller  <davem@davemloft.net>
3257
3258         * config/sparc/constraints.md (C, P, Z): New constraints for
3259         const_doube, const_int, and const_vector "all ones" values.
3260         Make unused constraint letters comment match reality.
3261         * config/sparc/predicates.md (const_all_ones_operand,
3262         register_or_zero_or_all_ones_operand): New predicates.
3263         * config/sparc/sparc.c (sparc_expand_move): Allow all ones
3264         as well as zero constants when VIS.
3265         (sparc_legitimate_constant_p): Likewise.
3266         * config/sparc/sparc.md (movsi_insn): Add fones alternative.
3267         (movsf_insn): Likewise
3268         (movdi_insn_sp64): Add fone alternative.
3269         (movdf_insn_sp32_v9): Likewise.
3270         (movdf_insn_sp64): Likewise.
3271
3272         * configure.ac: Add feature check to make sure the assembler
3273         supports the FMAF, HPC, and VIS 3.0 instructions found on
3274         Niagara-3 and later cpus.
3275         * configure: Rebuild.
3276         * config.in: Likewise.
3277         * config/sparc/sparc.opt: New option '-mfmaf'.
3278         * config/sparc/sparc.md: Add float fused multiply-add patterns.
3279         * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
3280         (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
3281         * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
3282         ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
3283         * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
3284         by default for Niagara-3 and later.  Turn it off if TARGET_FPU is
3285         disabled.
3286         (sparc_rtx_costs): Handle 'FMA'.
3287         * doc/invoke.texi: Document -mfmaf.
3288
3289 2011-09-25  Jakub Jelinek  <jakub@redhat.com>
3290
3291         * tree-ssa-structalias.c (intra_create_variable_infos): Treat
3292         TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
3293         DECL_BY_REFERENCE parameters.
3294
3295 2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>
3296
3297         * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
3298         if there is no outgoing edge.
3299
3300         * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
3301         integral types.
3302
3303 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
3304
3305         * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
3306         of vect_analyze_bb here.
3307         (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
3308
3309 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
3310
3311         * tree-data-ref.c (dr_analyze_innermost): Add new argument.
3312         Allow not simple iv if analyzing basic block.
3313         (create_data_ref): Update call to dr_analyze_innermost.
3314         (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
3315         * tree-loop-distribution.c (generate_memset_zero): Likewise.
3316         * tree-predcom.c (find_looparound_phi): Likewise.
3317         * tree-data-ref.h (dr_analyze_innermost): Add new argument.
3318
3319 2011-09-24  David S. Miller  <davem@davemloft.net>
3320
3321         * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
3322         (SPARC_GSR_REG): Define.
3323         (FIXED_REGISTERS): Mark GSR as fixed.
3324         (CALL_USED_REGISTERS): Mark GSR as call used.
3325         (HARD_REGNO_NREGS): GSR is always 1 register.
3326         (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
3327         (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
3328         (REGISTER_NAMES): Add "%gsr".
3329         * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
3330         (UNSPEC_WRGSR): New unspec.
3331         (GSR_REG): New constant.
3332         (type): Add new insn type 'gsr'.
3333         (fpack16_vis, fpackfix_vis, fpack32_vis,
3334         faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
3335         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
3336         rdgsr_v8plus): New expanders and insns.
3337         (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
3338         using patterns which show that this is a plus in addition to a
3339         modification of GSR_REG, instead of an unspec.
3340         * config/sparc/ultra1_2.md: Handle 'gsr'.
3341         * config/sparc/ultra3.md: Likewise.
3342         * config/sparc/niagara.md: Likewise.
3343         * config/sparc/niagara2.md: Likewise.
3344         * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
3345         end of table.
3346         (sparc_option_override): Make -mvis imply -mv8plus.
3347         (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
3348         for %gsr.
3349         (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
3350         __builtin_vis_read_gsr.
3351         (sparc_expand_buildin): Handle builtins that take one argument and
3352         return void.
3353         (sparc_fold_builtin): Never fold writes to %gsr.
3354         * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
3355         * doc/extend.texi: Document new VIS intrinsics.
3356
3357 2011-09-23  Jan Hubicka  <jh@suse.cz>
3358
3359         * ipa-inline-transform.c (inline_call): Add comment.
3360         * ipa-inline.h (inline_param_summary): New structure and vector.
3361         (struct inline_edge_summary): Add param field.
3362         * ipa-inline-analysis.c (CHANGED): New constant.
3363         (add_clause): Handle CHANGED and NOT_CONSTANT.
3364         (predicate_probability): New function.
3365         (dump_condition): Dump CHANGED predicate.
3366         (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
3367         of unknown function wide invariant.
3368         (evaluate_conditions_for_edge): Handle change probabilities.
3369         (inline_edge_duplication_hook): Copy param summaries.
3370         (inline_edge_removal_hook): Free param summaries.
3371         (dump_inline_edge_summary): Fix dumping of indirect edges and callee
3372         sizes; dump param summaries.
3373         (will_be_nonconstant_predicate): Use CHANGED predicate.
3374         (record_modified_bb_info): New structure.
3375         (record_modified): New function.
3376         (param_change_prob): New function.
3377         (estimate_function_body_sizes): Compute param summaries.
3378         (estimate_edge_size_and_time): Add probability argument.
3379         (estimate_node_size_and_time): Add inline_param_summary argument;
3380         handle predicate probabilities.
3381         (remap_predicate): Fix formating.
3382         (remap_edge_change_prob): New function.
3383         (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
3384         (remap_edge_predicates): ... this one.
3385         (inline_merge_summary): Remap edge summaries; handle predicate