OSDN Git Service

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