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