OSDN Git Service

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