OSDN Git Service

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