OSDN Git Service

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