OSDN Git Service

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