OSDN Git Service

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