OSDN Git Service

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