OSDN Git Service

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