OSDN Git Service

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