OSDN Git Service

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