OSDN Git Service

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