OSDN Git Service

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