1 2012-01-04 Georg-Johann Lay <avr@gjlay.de>
4 * config/avr/avr.md (cc): Add alternative "ldi".
5 (movqi_insn): Use it in cc attribute.
6 * config/avr/avr.c (notice_update_cc): Handle CC_LDI.
7 (output_reload_in_const): Use CLR to move 0 to ZERO_REG.
8 (output_reload_insisf): Use ZERO_REG to pre-clear register.
10 2012-01-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
12 * configure: Regenerate.
14 2012-01-04 Richard Guenther <rguenther@suse.de>
16 PR tree-optimization/49651
17 * tree-ssa-structalias.c (type_can_have_subvars): New function.
18 (var_can_have_subvars): Use it.
19 (get_constraint_for_1): Only consider subfields if there
22 2012-01-03 Jakub Jelinek <jakub@redhat.com>
25 * cselib.c (new_elt_loc_list): When moving locs from one
26 cselib_val to its new canonical_cselib_val and the
27 cselib_val was in first_containing_mem chain, but
28 the canonical_cselib_val was not, add the latter into the
30 (cselib_invalidate_mem): Compare canonical_cselib_val of
31 addr_list chain elt with v.
34 * dwarf2out.c (dwarf2out_start_source_file, dwarf2out_define,
35 dwarf2out_undef): Allocate e.info using ggc_strdup instead
37 (output_macinfo_op): Don't ggc_strdup fd->filename.
38 (optimize_macinfo_range): Allocate grp_name using XALLOCAVEC,
39 then ggc_strdup it. Don't free inc->info or cur->info.
40 (output_macinfo): Don't free ref->info or file->info.
42 2012-01-03 Ira Rosen <irar@il.ibm.com>
44 PR tree-optimization/51269
45 * tree-vect-loop-manip.c (set_prologue_iterations): Make
46 first_niters a pointer.
47 (slpeel_tree_peel_loop_to_edge): Likewise.
48 (vect_do_peeling_for_loop_bound): Update call to
49 slpeel_tree_peel_loop_to_edge.
50 (vect_gen_niters_for_prolog_loop): Don't compute wide_prolog_niters
51 here. Remove it from the parameters list.
52 (vect_do_peeling_for_alignment): Update calls and compute
55 2012-01-03 Richard Guenther <rguenther@suse.de>
57 PR tree-optimization/51070
58 * tree-loop-distribution.c (stmt_has_scalar_dependences_outside_loop):
59 Properly handle calls.
61 2012-01-03 Richard Guenther <rguenther@suse.de>
63 PR tree-optimization/51692
64 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not remove
65 the LHS of allocation stmts.
67 2012-01-03 Olivier Hainque <hainque@adacore.com>
69 * system.h: Prior to #define, #undef fopen and freopen unconditionally.
71 2012-01-03 Olivier Hainque <hainque@adacore.com>
73 * collect2.c (main): In AIX specific computations for vector
74 insertions, use CONST_CAST2 to cast from char ** to const char **.
76 2012-01-03 Richard Guenther <rguenther@suse.de>
79 * dwarf2out.c (dwarf2out_finish): Always create a DIE for
80 the context of a limbo DIE when it does not already exist.
82 2012-01-03 Jakub Jelinek <jakub@redhat.com>
84 PR tree-optimization/51719
85 * value-prof.c (gimple_ic): When indirect call isn't noreturn,
86 but direct call is, clear direct call's lhs and don't add fallthrough
87 edge from dcall_bb to join_bb and PHIs.
89 2012-01-03 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
91 * config/s390/s390.md ("*cmp<mode>_ccs"): Fix comment mentioning
92 the instructions emitted by the pattern.
93 ("*TDC_insn_<mode>"): Add comment.
95 2012-01-03 Richard Guenther <rguenther@suse.de>
98 * fold-const.c (fold_comparison): Properly canonicalize
99 tree offset and HOST_WIDE_INT bit position.
101 2012-01-02 Uros Bizjak <ubizjak@gmail.com>
103 * config/ia64/ia64.c (expand_vec_perm_broadcast): Use correct
104 operands for extzv pattern.
106 2012-01-02 Jakub Jelinek <jakub@redhat.com>
109 * cselib.c (add_mem_for_addr): Call canonical_cselib_val
112 2012-01-02 Sandra Loosemore <sandra@codesourcery.com>
114 * doc/invoke.texi (-flto and related options): Copy-edit.
116 2012-01-02 Richard Sandiford <rdsandiford@googlemail.com>
118 * config/mips/mips.md (loadgp_newabi_<mode>): Add missing earlyclobber.
120 2012-01-02 Jakub Jelinek <jakub@redhat.com>
122 * config/i386/sse.md (*avx2_gatherdi<mode>_3, *avx2_gatherdi<mode>_4):
125 2012-01-02 Richard Sandiford <rdsandiford@googlemail.com>
127 * expr.h (move_by_pieces_ninsns): Declare.
128 * expr.c (move_by_pieces_ninsns): Make external.
129 * config/mips/mips-protos.h (mips_move_by_pieces_p): Declare.
130 (mips_store_by_pieces_p): Likewise.
131 * config/mips/mips.h (MOVE_BY_PIECES_P): Call mips_move_by_pieces_p.
132 (STORE_BY_PIECES_P): Likewise mips_store_by_pieces_p.
133 * config/mips/mips.c (mips_move_by_pieces_p): New function.
134 (mips_store_by_pieces_p): Likewise.
136 2012-01-02 Jakub Jelinek <jakub@redhat.com>
138 * passes.c (register_one_dump_file): Free full_name.
140 * reload1.c (reload): Don't allocate reg_max_ref_width here.
141 (calculate_elim_costs_all_insns): Free offsets_at and
142 offsets_known_at at the end and clear the pointers.
144 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
146 * config/avr/avr.opt (-mbranch-cost): Fix double definition of
147 this option introduced in r180739.
149 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
152 * config.gcc (tm_file target=avr]): Add avr/avr-multilib.h
153 (tmake_file target=avr): Add avr/t-multilib.
155 * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use AVR_HAVE_8BIT_SP
156 to built-in define __AVR_HAVE_8BIT_SP__, __AVR_HAVE_16BIT_SP__.
157 * config/avr/genmultilib.awk: New file.
158 * config/avr/t-multilib: New auto-generated file.
159 * config/avr/multilib.h: New auto-generated file.
160 * config/avr/t-avr (AVR_MCUS): New variable.
162 (s-mlib): Depend on t-multilib.
163 (t-multilib, multilib.h): New dependencies.
164 (s-avr-mlib): New rule to build t-multilib, multilib.h from AVR_MCUS.
165 (MULTILIB_OPTIONS): Remove.
166 (MULTILIB_MATCHES): Remove.
167 (MULTILIB_DIRNAMES): Remove.
168 (MULTILIB_EXCEPTIONS): Remove:
169 * config/avr/genopt.sh: Don't use hard coded file name;
170 pass AVR_MCUS from t-avr instead.
172 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
174 * config/avr/avr.c (avr_out_ashrpsi3): Fix "case 31" to "case 23".
176 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
178 Implement light-weight DImode support.
179 * config/avr/avr-dimode.md: New file.
180 * config/avr/avr.md: Include it.
181 (adjust_len): Add plus64, compare64.
182 (HIDI): Remove code iterator.
183 (code_stdname): New code attribute.
184 (rotx, rotsmode): Remove DI.
185 (rotl<mode>3, *rotw<mode>, *rotb<mode>): Use HISI instead of HIDI
187 * config/avr/avr-protos.h (avr_have_dimode): New.
188 (avr_out_plus64, avr_out_compare64): New.
189 * config/avr/avr.c (avr_out_compare): Handle DImode.
190 (avr_have_dimode): New variable definition and initialization.
191 (avr_out_compare64, avr_out_plus64): New functions.
192 (avr_out_plus_1): Use simplify_unary_operation to negate xval.
193 (adjust_insn_length): Handle ADJUST_LEN_COMPARE64, ADJUST_LEN_PLUS64.
194 (avr_compare_pattern): Skip DImode comparisons.
196 2012-01-02 Revital Eres <revital.eres@linaro.org>
198 * ddg.c (def_has_ccmode_p): New function.
199 (add_cross_iteration_register_deps,
200 create_ddg_dep_from_intra_loop_link): Call it.
202 2012-01-02 Richard Guenther <rguenther@suse.de>
205 * invoke.texi (fassociative-math): Remove spurious paranthesis.
207 2012-01-01 Jakub Jelinek <jakub@redhat.com>
209 * gcc.c (process_command): Update copyright notice dates.
210 * gcov.c (print_version): Likewise.
211 * gcov-dump.c (print_version): Likewise.
212 * mips-tfile.c (main): Likewise.
213 * mips-tdump.c (main): Likewise.
215 2012-01-01 Ira Rosen <irar@il.ibm.com>
217 PR tree-optimization/51704
218 * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Check that
219 a use is inside the basic block or loop before accessing its vect info.
221 2012-01-01 Jan Hubicka <jhjh@suse.cz>
223 PR rtl-optimization/51069
224 * cfgloopmanip.c (remove_path): Removing path making irreducible
225 region unconditional makes BB part of the region.
227 2012-01-01 Jakub Jelinek <jakub@redhat.com>
229 PR tree-optimization/51683
230 * tree-ssa-propagate.c (substitute_and_fold): Don't optimize away
231 calls with side-effects.
232 * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
234 2011-12-31 Alexandre Oliva <aoliva@redhat.com>
236 * cselib.h (cselib_add_permanent_equiv): Declare.
237 (canonical_cselib_val): New.
238 * cselib.c (new_elt_loc_list): Rework to support value
239 equivalences. Adjust all callers.
240 (preserve_only_constants): Retain value equivalences.
241 (references_value_p): Retain preserved values.
242 (rtx_equal_for_cselib_1): Handle value equivalences.
243 (cselib_invalidate_regno): Use canonical value.
244 (cselib_add_permanent_equiv): New.
245 * alias.c (find_base_term): Reset locs lists while recursing.
246 * var-tracking.c (val_bind): New. Don't add equivalences
247 present in cselib table, compared with code moved from...
248 (val_store): ... here.
249 (val_resolve): Use val_bind.
250 (VAL_EXPR_HAS_REVERSE): Drop.
251 (add_uses): Do not create MOps for addresses. Do not mark
252 non-REG non-MEM expressions as requiring resolution.
253 (reverse_op): Record reverse as a cselib equivalence.
254 (add_stores): Use it. Do not create MOps for addresses.
255 Do not require resolution for non-REG non-MEM expressions.
256 Simplify support for reverse operations.
257 (compute_bb_dataflow): Drop reverse support.
258 (emit_notes_in_bb): Likewise.
259 (create_entry_value): Rename to...
260 (record_entry_value): ... this. Use cselib equivalences.
261 (vt_add_function_parameter): Adjust.
263 2011-12-30 Michael Meissner <meissner@linux.vnet.ibm.com>
265 * config/rs6000/rs6000.c (rs6000_inner_target_options): Fix thinko
266 in setting options via target #pragma or attribute.
268 2011-12-30 Anatoly Sokolov <aesok@post.ru>
270 * config/bfin/bfin.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
271 * config/bfin/bfin-protos.h (bfin_register_move_cost,
272 bfin_memory_move_cost): Remove.
273 * config/bfin/bfin.c (bfin_register_move_cost,
274 bfin_memory_move_cost): Make static. Change arguments type from
275 enum reg_class to reg_class_t and from int to bool.
276 (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
278 2011-12-30 Nathan Sidwell <nathan@acm.org>
280 * gcov.c (total_lines, total_executed): New global vars.
281 (generate_results): Call executed_summary.
282 (executed_summary): New function, broken out of ...
283 (function_summary): ... here. Call it.
284 * coverage.c (coverage_finish): Also check for local_tick == -1.
285 * gcov-dump (tag_function): Correct labelling typo.
287 2011-12-29 Michael Meissner <meissner@linux.vnet.ibm.com>
290 * config/rs6000/rs6000.c (rs6000_assemble_integer): Delete check
291 for an initialized pointer being in a text section with
292 -mrelocatable, since it should never happen.
294 2011-12-29 Michael Eager <eager@eagercon.com>
296 * config/microblaze/microblaze.md: Add expander for simple_return,
297 return, add return_internal and simple_return_internal insns.
299 2011-12-29 Oleg Endo <olegendo@gcc.gnu.org>
301 * config/sh/sh.h (BRANCH_COST): Use sh_branch_cost variable.
302 * config/sh/sh.c (sh_option_override): Simplify sh_branch_cost
305 2011-12-28 Ian Lance Taylor <iant@google.com>
307 * dwarf2out.c (gen_compile_unit_die): Use DW_LANG_Go for Go.
309 2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
312 * config/rs6000/rs6000.c (rs6000_assemble_integer): Don't call
313 unlikely_text_section_p. Instead check for being in a code section.
315 2011-12-28 Ira Rosen <irar@il.ibm.com>
317 PR tree-optimization/51684
318 * tree-vect-slp.c (vect_schedule_slp_instance): Get gsi of original
319 statement in case of a pattern.
320 (vect_schedule_slp): Likewise.
322 2011-12-27 Eric Botcazou <ebotcazou@adacore.com>
324 PR rtl-optimization/51667
325 * ree.c (insn_merge_code): Delete.
326 (is_insn_merge_attempted): Likewise.
327 (get_insn_status): Likewise.
328 (set_insn_status): Likewise.
329 (struct ext_cand): Add CODE and MODE fields.
330 (combine_set_extend): Rename to...
331 (combine_set_extension): ...this. Use above fields and tidy up.
332 (transform_ifelse): Likewise.
333 (get_defs): Return the chain of definitions.
334 (is_this_a_cmove): Merge into...
335 (is_cond_copy_insn): ...this. Return bool.
336 (make_defs_and_copies_lists): Adjust calls to get_defs and simplify.
337 (merge_def_and_ext): Adjust call to combine_set_extend.
338 (combine_reaching_defs): Remove calls to {g|s}et_insn_status.
339 (struct extend_info): Rename to...
340 (struct re_info): ...this. Add DEF_MAP field.
341 (add_ext_candidate): Merge into...
342 (add_removable_extension): ...this. Adjust calls to get_defs. Ensure
343 reaching definitions are associated with only one kind of extension.
344 (find_removable_extensions): Create and destroy the definition map.
345 (find_and_remove_re): Return void. Change 'long' variables to 'int'.
346 Do not deal with is_insn_merge_attempted.
348 2011-12-25 Jan Hubicka <jh@suse.cz>
351 * tree-ssa-threadupdate.c (redirect_edges): Watch for overflow.
353 2011-12-26 Oleg Endo <oleg.endo@t-online.de>
355 * config/sh/sync.md: Add soft atomics ABI description.
356 (fetchop_name): Use 'or' instead of 'ior'.
357 (fetchop_insn): Remove.
358 (atomic_compare_and_swap<mode>_soft):
359 Don't insert aligning nop after the write-back instruction. Fix
360 multi-line asm output formatting style.
361 (atomic_fetch_<fetchop_name><mode>_soft): Likewise.
362 (atomic_fetch_nand<mode>_soft): Likewise.
363 (atomic_<fetchop_name>_fetch<mode>_soft): Likewise.
364 (atomic_nand_fetch<mode>_soft): Likewise.
366 2011-12-23 Richard Henderson <rth@redhat.com>
368 * tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR): Remove.
369 * cfgexpand.c (expand_debug_expr): Don't handle them.
370 * expr.c (expand_expr_real_2): Likewise.
371 * fold-const.c (fold_binary_loc): Likewise.
372 * gimple-pretty-print.c (dump_binary_rhs): Likewise.
373 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
374 * tree-inline.c (estimate_operator_cost): Likewise.
375 * tree-pretty-print.c (dump_generic_node): Likewise.
376 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
377 * optabs.c (optab_for_tree_code): Likewise.
378 (can_vec_perm_for_code_p): Remove.
379 (expand_binop): Don't try it.
380 (init_optabs): Don't init vec_extract_even/odd_optab.
381 * genopinit.c (optabs): Likewise.
382 * optabs.h (OTI_vec_extract_even, OTI_vec_extract_odd): Remove.
383 (vec_extract_even_optab, vec_extract_odd_optab): Remove.
384 * tree-vect-data-refs.c (vect_strided_store_supported): Tidy code.
385 (vect_permute_store_chain): Use TYPE_VECTOR_SUBPARTS instead of
386 GET_MODE_NUNITS; check vect_gen_perm_mask return value instead of
387 asserting vect_strided_store_supported.
388 (vect_strided_load_supported): Use can_vec_perm_p.
389 (vect_permute_load_chain): Use VEC_PERM_EXPR.
391 * doc/generic.texi (VEC_EXTRACT_EVEN_EXPR): Remove.
392 (VEC_EXTRACT_ODD_EXPR): Remove.
393 * doc/md.texi (vec_extract_even, vec_extract_odd): Remove.
395 2011-12-23 Anatoly Sokolov <aesok@post.ru>
397 * config/score/score.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
398 * config/score/score-protos.h (score_register_move_cost): Remove.
399 * config/score/score.c (TARGET_REGISTER_MOVE_COST): Define.
400 (score_register_move_cost): Make static. Change arguments type from
401 enum reg_class to reg_class_t.
403 2011-12-23 Jakub Jelinek <jakub@redhat.com>
404 Richard Henderson <rth@redhat.com>
406 * tree.def (VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): Remove.
407 * gimple-pretty-print.c (dump_binary_rhs): Don't handle
408 VEC_INTERLEAVE_HIGH_EXPR and VEC_INTERLEAVE_LOW_EXPR.
409 * expr.c (expand_expr_real_2): Likewise.
410 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
411 * cfgexpand.c (expand_debug_expr): Likewise.
412 * tree-inline.c (estimate_operator_cost): Likewise.
413 * tree-pretty-print.c (dump_generic_node): Likewise.
414 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
415 * fold-const.c (fold_binary_loc): Likewise.
416 * doc/generic.texi (VEC_INTERLEAVE_HIGH_EXPR,
417 VEC_INTERLEAVE_LOW_EXPR): Remove documentation.
418 * optabs.c (optab_for_tree_code): Don't handle
419 VEC_INTERLEAVE_HIGH_EXPR and VEC_INTERLEAVE_LOW_EXPR.
420 (expand_binop, init_optabs): Remove vec_interleave_high_optab
421 and vec_interleave_low_optab.
422 * genopinit.c (optabs): Likewise.
423 * optabs.h (OTI_vec_interleave_high, OTI_vec_interleave_low): Remove.
424 (vec_interleave_high_optab, vec_interleave_low_optab): Remove.
425 * doc/md.texi (vec_interleave_high, vec_interleave_low): Remove
427 * tree-vect-stmts.c (gen_perm_mask): Renamed to...
428 (vect_gen_perm_mask): ... this. No longer static.
429 (perm_mask_for_reverse, vectorizable_load): Adjust callers.
430 * tree-vectorizer.h (vect_gen_perm_mask): New prototype.
431 * tree-vect-data-refs.c (vect_strided_store_supported): Don't try
432 VEC_INTERLEAVE_*_EXPR, use can_vec_perm_p instead of
433 can_vec_perm_for_code_p.
434 (vect_permute_store_chain): Generate VEC_PERM_EXPR with interleaving
435 masks instead of VEC_INTERLEAVE_HIGH_EXPR and VEC_INTERLEAVE_LOW_EXPR.
436 * config/i386/i386.c (expand_vec_perm_interleave2): If
437 expand_vec_perm_interleave3 would handle it, return false.
438 (expand_vec_perm_broadcast_1): Don't use vec_interleave_*_optab.
440 2011-12-23 Richard Henderson <rth@redhat.com>
442 * config/mips/loongson.md (UNSPEC_LOONGSON_PINSR_0,
443 UNSPEC_LOONGSON_PINSR_1, UNSPEC_LOONGSON_PINSR_2,
444 UNSPEC_LOONGSON_PINSR_3): Replace with...
445 (UNSPEC_LOONGSON_PINSRH): ... this.
446 (UNSPEC_LOONGSON_VINIT): New.
447 (UNSPEC_LOONGSON_DSLL, UNSPEC_LOONGSON_DSRL): New.
448 (VWB): New mode iterator.
449 (V_inner): New mode attribute.
450 (loongson_vec_init1_<VHB>): New.
451 (*vec_concatv2si): New.
452 (and<VWHB>3, ior<VWHB>3, xor<VWHB>3, one_cmpl<VWHB>2): New.
453 (*loongson_nor): New.
454 (loongson_pextrh): Un-macro-ify.
455 (loongson_pmaddhw): Likewise.
456 (smaxv4hi3, umaxv8qi3, sminv4hi3, uminv8qi3): Likewise.
457 (loongson_pinsrh_0): Represent with vec_select+vec_concat.
458 (loongson_pinsrh_1, loongson_pinsrh_2, loongson_pinsrh_3): Likewise.
459 (*vec_setv4hi, vec_setv4hi): New.
460 (sdot_prodv4hi): New.
461 (smax<VWB>3, smin<VWB>3): New.
462 (reduc_uplus_v8qi): New.
463 (loongson_pshufh): Remove destination matching input.
464 (ashl<VWH>3, ashr<VWH>3, lshr<VWH>3): Fix type attribute.
465 (vec_interleave_high<VWHB>, vec_interleave_low<VWHB>): Remove.
466 (loongson_punpckhbh, loongson_punpckhhw, loongson_punpckhhw_qi,
467 loongson_punpckhwd, loongson_punpckhwd_qi, loongson_punpckhwd_hi,
468 loongson_punpcklbh, loongson_punpcklhw, loongson_punpcklhw_qi,
469 loongson_punpcklwd, loongson_punpcklwd_qi, loongson_punpcklwd_hi,
470 vec_perm_const<VWHB>, vec_unpacks_lo_<VHB>, vec_unpacks_hi_<VHB>,
471 vec_unpacku_lo_<VHB>, vec_unpacku_hi_<VHB>, vec_shl_<VWHBDI>,
472 vec_shr_<VWHBDI>, reduc_uplus_<VWH>, reduc_splus_<VWHB>,
473 reduc_smax_<VWHB>, reduc_smin_<VWHB>, reduc_umax_<VWHB>,
474 reduc_umin_<VB>): New.
475 * config/mips/mips-ps-3d.md (vec_perm_const_ps): New.
476 (mips_pul_ps, mips_puu_ps, mips_pll_ps, mips_plu_ps): Expand in
477 terms of vec_perm_const_ps.
478 (vec_perm_constv2sf): New.
479 (vec_initv2sf): Use mips_expand_vector_init.
480 (vec_concatv2sf): Rename from vec_initv2sf_internal.
481 (vec_setv2sf): Use vec_perm_const_ps.
482 (reduc_splus_v2sf, reduc_smin_v2sf, reduc_smax_v2sf): New.
483 * config/mips/loongson.h (pshufh_u, pshufh_s): Don't pass dest to
485 * config/mips/mips-modes.def (V16QI, V8HI, V4SI, V4SF): New modes.
486 * config/mips/mips-protos.h: Update.
487 * config/mips/mips.c (mips_get_arg_info): Match V2SFmode, not all
489 (mips_return_mode_in_fpr_p): Likewise.
490 (mips_cannot_change_mode_class): Allow 8-byte integral mode changes.
491 (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw,
492 CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh,
493 CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): Remove.
494 (mips_builtins): Remove first operand for loongson pshufh builtins.
495 (MAX_VECT_LEN, struct expand_vec_perm_d): New.
496 (mips_expand_vselect, mips_expand_vselect_vconcat,
497 mips_expand_vpc_loongson_even_odd, mips_expand_vpc_loongson_pshufh,
498 mips_expand_vpc_loongson_bcast, mips_expand_vec_perm_const_1,
499 mips_expand_vec_perm_const, mips_vectorize_vec_perm_const_ok,
500 mips_expand_vec_unpack, mips_constant_elt_p, mips_expand_vi_broadcast,
501 mips_expand_vi_constant, mips_expand_vi_loongson_one_pinsrh,
502 mips_expand_vi_general, mips_expand_vec_reduc, mips_expand_vec_minmax,
503 TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
504 (mips_expand_vector_init): Rewrite.
505 * config/mips/predicates.md (const_2_or_3_operand): New.
506 (const_0_to_3_operand): New.
508 2011-12-23 Dmitry Plotnikov <dplotnikov@ispras.ru>
510 * config/arm/neon.md (float<mode><V_cvtto>2): New.
511 (floatuns<mode><V_cvtto>2): New.
512 (fix_trunc<mode><V_cvtto>2): New.
513 (fix_truncuns<mode><V_cvtto>2): New.
514 * config/arm/iterators.md (V_cvtto): New iterator.
516 2011-12-23 Richard Guenther <rguenther@suse.de>
518 PR rtl-optimization/50396
519 * simplify-rtx.c (simplify_binary_operation_1): Properly
520 guard code that only works for integers.
522 2011-12-23 Tristan Gingold <gingold@adacore.com>
524 * config/vms/vms-crtlmap.map (log10): Fix typo.
526 2011-12-23 Tristan Gingold <gingold@adacore.com>
528 * config/ia64/vms.h (SUPPORTS_ONE_ONLY): Define.
530 2011-12-22 Bin Cheng <bin.cheng@arm.com>
531 Richard Guenther <rguenther@suse.de>
533 PR tree-optimization/43491
534 * tree-ssa-pre.c (eliminate): Don't replace global register
535 variable when it is the RHS of a single assign.
537 2011-12-22 Joey Ye <joey.ye@arm.com>
539 * toplev.c (process_options): Fix typo.
541 2011-12-22 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
544 * config/pa/pa.c (pa_som_tm_clone_table_section): New function.
545 (som_tm_clone_table_section): Declare.
546 (pa_file_start_space): Create $TM_CLONE_TABLE$ subspace.
547 (pa_som_asm_init_sections): Init som_tm_clone_table_section.
548 * config/pa/som.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define.
550 2011-12-22 Richard Sandiford <rdsandiford@googlemail.com>
552 * doc/tm.texi.in (TARGET_PREPARE_PCH_SAVE): New hook.
553 * doc/tm.texi: Regenerate.
554 * target.def (prepare_pch_save): New hook.
555 * c-family/c-pch.c (c_common_write_pch): Call it.
556 * config/mips/mips.c (was_mips16_pch_p): Delete.
557 (mips_set_mips16_mode): Don't refer to was_mips16_pch_p.
558 (mips_prepare_pch_save): New function.
559 (TARGET_PREPARE_PCH_SAVE): Define.
561 2011-12-22 Aldy Hernandez <aldyh@redhat.com>
564 * opts.c (finish_options): Call sorry on -fgnu-tm and
565 -fnon-call-exceptions combination.
567 2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
569 * doc/invoke.texi (C++ Dialect Options): Add missing options and
570 move -Wzero-as-null-pointer-constant to ...
571 (Warning Options): ... here.
573 2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
576 * doc/invoke.texi (i386 and x86-64 Options): Fix description of
577 -mtune without -march.
579 2011-12-21 Richard Earnshaw <rearnsha@arm.com>
582 * arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
585 2011-12-22 Tristan Gingold <gingold@adacore.com>
587 * config/ia64/ia64.c (ia64_promote_function_mode): Remove.
588 (TARGET_PROMOTE_FUNCTION_MODE): Remove.
589 (ia64_function_value): Call promote_function_mode instead of
590 ia64_promote_function_mode.
591 * config/ia64/vms.h (PROMOTE_MODE): Define.
592 (TARGET_PROMOTE_FUNCTION_MODE): Define.
594 2011-12-22 Uros Bizjak <ubizjak@gmail.com>
597 * common/config/alpha/alpha-common.c (alpha_option_optimization_table):
598 Enable flag_ree at -O2 or higher.
600 2011-12-22 Richard Guenther <rguenther@suse.de>
603 * lto.c (uniquify_nodes): Register TYPE_DECLs with the
606 2011-12-22 Bernd Schmidt <bernds@codesourcery.com>
608 * tree-pass.h (pass_reload): Declare.
609 * ira.c (overall_cost_before, saved_flag_ira_share_spill_slots):
610 New global variables, moved out of ira.
611 (do_reload): New static function, split off from the second half
615 (pass_ira): Use TV_IRA, set gate to NULL, and set flags to
617 (rest_of_handle_reload): New static function.
620 2011-12-22 Uros Bizjak <ubizjak@gmail.com>
622 * common/config/i386/i386-common.c (ix86_option_optimization_table):
623 Move OPT_free processing from ...
624 * config/i386/i386.c (ix86_option_override_internal): ... here.
626 2011-12-21 Richard Earnshaw <rearnsha@arm.com>
629 * arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
630 weak function on bare-metal EABI targets.
632 2011-12-21 Jonathan Wakely <jwakely.gcc@gmail.com>
633 Jim Avera <james_avera@yahoo.com>
635 * doc/extend.texi (__builtin_expect): Improve example.
637 2011-12-21 Uros Bizjak <ubizjak@gmail.com>
639 * config/i386/i386.c (ix86_option_override_internal): Enable flag_ree
640 also for 32bit targets.
642 2011-12-21 Richard Henderson <rth@redhat.com>
645 * dwarf2cfi.c (dwarf2out_frame_debug): Move any_cfis_emitted code...
646 (scan_trace): ... here.
648 2011-12-21 Jason Merrill <jason@redhat.com>
650 * doc/standards.texi (C++ language): Update for C++11.
652 2011-12-21 Jakub Jelinek <jakub@redhat.com>
654 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Initialize
655 *op0 and *op1 to NULL_TREE first to avoid warnings.
656 * calls.c (initialize_argument_information): Initialize base to avoid
661 * tree-eh.c (decide_copy_try_finally): At -O0, return true
662 even when ndests is not 1, if there are only gimple_clobber_p
663 (or debug) stmts in the finally sequence.
664 * tree-inline.c (estimate_num_insns): Return 0 for gimple_clobber_p
667 2011-12-21 Aldy Hernandez <aldyh@redhat.com>
670 * trans-mem.c (tm_log_add): Use create_tmp_var_reg.
672 2011-12-21 Martin Jambor <mjambor@suse.cz>
674 * tree-into-ssa.c (rewrite_update_stmt): Do not dump extra newlines.
675 (rewrite_update_enter_block): Likewise.
676 (dump_update_ssa): Likewise.
677 (update_ssa): Likewise but also dump a newline at the beginning.
679 2011-12-21 Enkovich Ilya <ilya.enkovich@intel.com>
682 * implicit-zee.c: Delete.
684 * Makefile.in: Replace implicit-zee.c with ree.c.
685 * config/i386/i386.c (ix86_option_override_internal): Rename
686 flag_zee to flag_ree.
687 * common.opt (fzee): Ignored.
689 * passes.c (init_optimization_passes): Replace pass_implicit_zee
691 * tree-pass.h (pass_implicit_zee): Delete.
693 * timevar.def (TV_ZEE): Delete.
695 * doc/invoke.texi: Add -free description.
697 2011-12-21 Tristan Gingold <gingold@adacore.com>
699 * config/vms/vms-protos.h (vms_function_section): New prototype.
700 * config/vms/vms.c (vms_function_section): New function.
701 * config/vms/vms.h (TARGET_ASM_FUNCTION_SECTION): Define.
703 2011-12-21 Richard Guenther <rguenther@suse.de>
706 * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
707 mode of the pseudo as destination mode. Only assert that
708 is equal to the promoted mode of the decl if it is a REG.
710 2011-12-21 Tristan Gingold <gingold@adacore.com>
712 * config/vms/xm-vms.h (STANDARD_EXEC_PREFIX): Remove define.
714 2011-12-20 Richard Henderson <rth@redhat.com>
716 * config/ia64/ia64.c (MAX_VECT_LEN): New.
717 (struct expand_vec_perm_d): New.
718 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
719 (ia64_unpack_assemble): Use ia64_expand_vec_perm_const_1.
720 (expand_vselect, expand_vselect_vconcat): New.
721 (expand_vec_perm_identity, expand_vec_perm_shrp): New.
722 (expand_vec_perm_1, expand_vec_perm_broadcast): New.
723 (expand_vec_perm_interleave_2, expand_vec_perm_v4hi_5): New.
724 (ia64_expand_vec_perm_const_1, ia64_expand_vec_perm_const): New.
725 (ia64_vectorize_vec_perm_const_ok): New.
726 (ia64_expand_vec_setv2sf, ia64_expand_vec_perm_even_odd): New.
727 * config/ia64/ia64-protos.h: Update.
728 * config/ia64/vect.md (VEC): New mode iterator.
729 (vecint): New mode attribute.
730 (vec_interleave_lowv8qi, vec_interleave_highv8qi): Privatize with '*'.
731 (vec_interleave_lowv4hi, vec_interleave_highv4hi): Likewise.
732 (vec_interleave_lowv2si, vec_interleave_highv2si): Likewise.
733 (vec_interleave_lowv2sf, vec_interleave_highv2sf): Likewise.
734 (mix1_even, mix1_odd, mux1_alt): Likewise.
735 (mux1_brcst_qi): Remove '*' from name.
736 (vec_extract_evenv8qi, vec_extract_oddv8qi): Remove.
737 (vec_extract_evenv4hi, vec_extract_oddv4hi): Remove.
738 (vec_extract_evenv2si, vec_extract_oddv2si): Remove.
739 (vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
740 (vec_extract_evenodd_helper): Remove.
741 (vec_setv2sf): Use ia64_expand_vec_setv2sf.
742 (vec_pack_trunc_v4hi): Use ia64_expand_vec_perm_even_odd.
743 (vec_pack_trunc_v2si): Likewise.
744 (vec_perm_const<VEC>): New.
746 2011-12-20 Richard Henderson <rth@redhat.com>
748 * tree-vect-generic.c (expand_vector_operations_1): Correct tests
749 for vector types -- use the type not the mode. Fix optab selection
750 for vector shifts by a scalar. Handle over-large integer modes
753 2011-12-20 Richard Henderson <rth@redhat.com>
755 * config/arm/arm.md (*arm_xorsi3): Match iorsi3 and perform
756 post-reload splitting.
758 * config/arm/arm.md (*arm_cmpdi_unsigned): Enable for thumb2.
759 * config/arm/arm.c (arm_select_cc_mode): Use it.
761 2011-12-20 Richard Sandiford <rdsandiford@googlemail.com>
763 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
764 handling of signedness differences to integer types. Only build
765 a new optype if type1 isn't correct.
767 2011-12-20 Vladimir Makarov <vmakarov@redhat.com>
770 * ira-costs.c (find_costs_and_classes): Prefer registers even
771 if the memory cost is the same.
773 2011-12-20 Joseph Myers <joseph@codesourcery.com>
775 * c-decl.c (diagnose_mismatched_decls, grokdeclarator, grokfield)
776 (finish_struct): Refer to C11 in comments. Use flag_isoc11.
777 * c-parser.c (c_parser_static_assert_declaration)
778 (c_parser_static_assert_declaration_no_semi, c_parser_declspecs)
779 (c_parser_alignas_specifier, c_parser_alignof_expression): Refer
780 to C11 in comments. Use flag_isoc11.
781 * c-typeck.c (comptypes_check_different_types): Refer to C11 in
783 * doc/cpp.texi (Overview): Refer to -std=c11 instead of -std=c1x.
784 * doc/cppopts.texi (-std=c11, -std=gnu11): Document in preference
785 to -std=c1x and -std=gnu1x.
786 * doc/extend.texi (Inline, Alternate Keywords, Other Builtins)
787 (__builtin_complex, Unnamed Fields): Refer to -std=c11 and C11
788 instead of -std=c1x and C1X.
789 * doc/invoke.texi (-std=c11, -std=iso9899:2011): Document in
790 preference to -std=c1x.
791 (-std=gnu11): Document in preference to -std=gnu1x.
792 * doc/standards.texi: Document C11 instead of C1X. Document C11
793 as actual standard. Document headers required from freestanding
795 * ginclude/float.h, ginclude/stddef.h: Test __STDC_VERSION__ >=
796 201112L for C11. Update comments to refer to C11.
798 2011-12-20 Andreas Schwab <schwab@linux-m68k.org>
800 * configure: Regenerate.
802 2011-12-20 Bernd Schmidt <bernds@codesourcery.com>
805 * expr.c (store_field): Avoid a direct store if the mode is larger
806 than the size of the bit field.
807 * stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
808 treat non-volatile bit fields like volatile ones.
809 * toplev.c (process_options): Disallow combination of
810 -fstrict-volatile-bitfields and ABI versions less than 2.
811 * config/arm/arm.c (arm_option_override): Don't enable
812 flag_strict_volatile_bitfields if the ABI version is less than 2.
813 * config/h8300/h8300.c (h8300_option_override): Likewise.
814 * config/rx/rx.c (rx_option_override): Likewise.
815 * config/m32c/m32c.c (m32c_option_override): Likewise.
816 * config/sh/sh.c (sh_option_override): Likewise.
818 2011-12-20 Richard Guenther <rguenther@suse.de>
821 * dwarf2out.c (modified_type_die): When the type variant
822 chain is corrupt use the types name, if available, instead
825 2011-12-20 Tristan Gingold <gingold@adacore.com>
827 * config/alpha/alpha.c (alpha_start_function): Adjust condition to
828 create VMS trampoline entry point.
830 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com>
832 PR rtl-optimization/42839
833 * fwprop.c (forward_propagate_subreg): Skip the SIGN/ZERO_EXTEND
834 optimization if the source register is already extended.
836 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com>
838 * lower-subreg.c (can_decompose_p): Check every word of a hard
841 2011-12-19 Sandra Loosemore <sandra@codesourcery.com>
842 Tom de Vries <tom@codesourcery.com>
845 * cse.c (find_comparison_args): Detect fixed point and
848 2011-12-19 Aldy Hernandez <aldyh@redhat.com>
851 * trans-mem.c (ipa_tm_create_version): Unset DECL_WEAK.
853 2011-12-19 Quentin Neill <quentin.neill@amd.com>
856 * config/i386/driver-i386.c (host_detect_local_cpu): Also check
857 family to distinguish PROCESSOR_ATHLON.
859 2011-12-19 Richard Guenther <rguenther@suse.de>
862 * streamer-hooks.h (struct streamer_hooks): Add second
863 ref_p parameter to write_tree.
864 (stream_write_tree): Adjust.
865 (stream_write_tree_shallow_non_ref): New define.
866 * lto-streamer.h (lto_output_tree): Adjust.
867 * lto-streamer-out.c (lto_output_tree): Likewise.
868 * tree-streamer-out.c (streamer_write_chain): Only
869 force the immediate tree to be streamed as non-reference.
871 2011-12-19 Martin Jambor <mjambor@suse.cz>
873 PR tree-optimization/51583
874 * tree-sra.c (load_assign_lhs_subreplacements): Call
875 force_gimple_operand_gsi when necessary also in case of no
876 corresponding replacement on the RHS.
878 2011-12-19 Jakub Jelinek <jakub@redhat.com>
880 * gimple.h (gimplify_seq_add_stmt): Rename to...
881 (gimple_seq_add_stmt_without_update): ... this.
882 * gimplify.c (gimplify_seq_add_stmt): Rename to...
883 (gimple_seq_add_stmt_without_update): ... this.
884 (gimplify_seq_add_stmt): New inline wrapper for it.
885 * tree-vect-patterns.c (append_pattern_def_seq): Use
886 gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt.
888 PR tree-optimization/51596
889 * tree-cfg.c (replace_uses_by): Call gimple_purge_dead_eh_edges
893 PR tree-optimization/51606
894 * tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq):
895 New inline functions.
896 (vect_recog_over_widening_pattern,
897 vect_recog_vector_vector_shift_pattern,
898 vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern,
899 adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them.
901 2011-12-19 Richard Guenther <rguenther@suse.de>
904 * tree.c (free_lang_data_in_type): Do not unlink TYPE_DECL
906 (find_decls_types_r): Walk TYPE_DECLs in TYPE_FIELDS.
907 * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Do
908 not stream TREE_CHAIN.
909 (write_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
910 using streamer_write_chain.
911 * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
912 Do not stream TREE_CHAIN.
913 (lto_input_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
914 using streamer_read_chain.
915 * gimple-streamer-in.c (input_gimple_stmt): Skip non-FIELD_DECLs.
916 * gimple.c (gimple_canonical_types_compatible_p): Properly
917 handle trailing non-FIELD_DECLs in TYPE_FIELDS.
919 2011-12-19 Andreas Schwab <schwab@linux-m68k.org>
921 * configure: Regenerate.
923 2011-12-19 Bernd Schmidt <bernds@codesourcery.com>
925 * emit-rtl.c (init_emit_once): Initialize const_tiny_rtx[3] for
926 partial integer modes.
928 2011-12-19 Andreas Schwab <schwab@linux-m68k.org>
931 * config/m68k/m68k.h (FL_CAS, TARGET_CAS): Define.
932 * config/m68k/m68k.c (FL_FOR_isa_20): Add FL_CAS.
933 * config/m68k/sync.md: Use TARGET_CAS instead of (TARGET_68020 ||
936 2011-12-18 Anatoly Sokolov <aesok@post.ru>
938 * config/ia64/ia64.h (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
939 LEGITIMATE_ADDRESS_REG, LEGITIMATE_ADDRESS_DISP,
940 GO_IF_LEGITIMATE_ADDRESS): Remove macros.
941 * config/ia64/ia64.c (TARGET_LEGITIMATE_ADDRESS_P): Define.
942 (ia64_reg_ok_for_base_p, ia64_legitimate_address_reg,
943 ia64_legitimate_address_disp, ia64_legitimate_address_p): New
946 2011-12-17 Tom de Vries <tom@codesourcery.com>
948 PR tree-optimization/51491
949 * tree-ssa-ccp.c (insert_clobber_before_stack_restore)
950 (gsi_prev_dom_bb_nondebug, insert_clobbers_for_var): New function.
951 (ccp_fold_stmt): Use insert_clobbers_for_var after a successful
952 fold_builtin_alloca_with_align.
953 (ccp_visit_stmt): Calculate and free dominator info.
955 2011-12-16 Eric Botcazou <ebotcazou@adacore.com>
957 * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
958 (frame_blockage): New expander.
959 (frame_blockage<P:mode>): New instruction.
960 * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
961 instructions establishing the frame isn't atomic, emit frame blockage.
963 2011-12-16 Tristan Gingold <gingold@adacore.com>
965 * config/alpha/vms.h (USE_TM_CLONE_REGISTRY): Define.
967 2011-12-16 Tristan Gingold <gingold@adacore.com>
969 * config/alpha/alpha.c (alpha_use_linkage): Follow transparent alias.
970 (alpha_write_one_linkage): Use assemble_name to emit linkage name.
972 2011-12-16 Tristan Gingold <gingold@adacore.com>
974 * config/vms/t-vms (vms.o, vms-c.o): Force output filename.
976 2011-12-16 Tristan Gingold <gingold@adacore.com>
978 * config/vms/vms.c (VMS_CRTL_GLOBAL): Define.
979 (vms_patch_builtins): Handle.
980 * config/vms/vms-crtlmap.map: Add an entry for environ.
982 2011-12-16 Jakub Jelinek <jakub@redhat.com>
985 * sel-sched-ir.c (create_copy_of_insn_rtx): Copy all notes
986 other than REG_EQUAL, REG_EQUIV and REG_LABEL_OPERAND.
988 PR tree-optimization/51576
989 * tree-cfg.c (replace_uses_by): Call maybe_clean_or_replace_eh_stmt
990 even if fold_stmt didn't change anything.
992 2011-12-16 Richard Guenther <rguenther@suse.de>
995 * dwarf2out.c (gen_type_die_with_usage): Use the context of
996 the TYPE_DECL as well if it is file-scope.
998 2011-12-15 DJ Delorie <dj@redhat.com>
1000 * config/rl78/rl78.md (return): Rename to rl78_return.
1001 * config/rl78/rl78.c (rl78_expand_epilogue): Use new name.
1002 (rl78_expand_eh_epilogue): Use new name.
1003 (rl78_calculate_death_notes): Likewise.
1005 2011-12-15 Jakub Jelinek <jakub@redhat.com>
1007 * tree-vectorizer.h (struct _stmt_vec_info): Remove pattern_def_stmt
1008 field, add pattern_def_seq.
1009 (STMT_VINFO_PATTERN_DEF_STMT): Remove.
1010 (STMT_VINFO_PATTERN_DEF_SEQ): Define.
1011 (NUM_PATTERNS): Bump to 10.
1012 * tree-vect-loop.c (vect_determine_vectorization_factor,
1013 vect_transform_loop): Adjust for pattern def changing from a single
1014 gimple stmt to gimple_seq.
1015 * tree-vect-stmts.c (vect_analyze_stmt, new_stmt_vec_info,
1016 free_stmt_vec_info): Likewise.
1017 * tree-vect-patterns.c (vect_recog_over_widening_pattern,
1018 vect_recog_vector_vector_shift_pattern,
1019 vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast,
1020 adjust_bool_pattern, vect_mark_pattern_stmts): Likewise.
1021 (vect_recog_sdivmod_pow2_pattern): New function.
1022 (vect_vect_recog_func_ptrs): Add it.
1024 * config/i386/sse.md (vcond<V_256:mode><VI_256:mode>,
1025 vcond<V_128:mode><VI124_128:mode>, vcond<VI8F_128:mode>v2di):
1026 Use general_operand instead of nonimmediate_operand for
1027 operand 5 and no predicate for operands 1 and 2.
1028 * config/i386/i386.c (ix86_expand_int_vcond): Optimize
1029 x < 0 ? -1 : 0 and x < 0 ? 1 : 0 into vector arithmetic
1030 resp. logical shift.
1032 2011-12-15 Georg-Johann Lay <avr@gjlay.de>
1034 * config/avr/avr-protos.h (print_operand): Remove.
1035 (print_operand_address): Remove.
1036 * config/avr/avr.h (PRINT_OPERAND): Remove.
1037 (PRINT_OPERAND_ADDRESS): Remove.
1038 (PRINT_OPERAND_PUNCT_VALID_P): Remove.
1039 * config/avr/avr.c (TARGET_PRINT_OPERAND): New hook define.
1040 (TARGET_PRINT_OPERAND_ADDRESS): New hook define.
1041 (TARGET_PRINT_OPERAND_PUNCT_VALID_P): New hook define.
1042 (print_operand_address): Rename to...
1043 (avr_print_operand_address): ...this and make static.
1044 (print_operand): Rename to...
1045 (avr_print_operand): ...this and make static.
1046 (avr_print_operand_punct_valid_p): New static function.
1048 2011-12-15 Andreas Tobler <andreast@fgznet.ch>
1050 * config/i386/freebsd.h (TARGET_ASM_FILE_END): Define.
1052 2011-12-15 Jakub Jelinek <jakub@redhat.com>
1055 * c-parser.c (c_parser_omp_clause_num_threads,
1056 c_parser_omp_clause_schedule): Call mark_exp_read.
1058 2011-12-15 Romain Geissler <romain.geissler@gmail.com>
1060 * builtins.def (BUILT_IN_STPNCPY_CHK): New definition.
1061 * builtins.c (expand_builtin, fold_builtin_4, maybe_emit_chk_warning):
1062 Add BUILT_IN_STPNCPY_CHK case.
1063 * gimple-fold.c (gimple_fold_builtin): Likewise.
1064 * tree-object-size.c (pass_through_call): Likewise.
1065 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
1066 call_may_clobber_ref_p_1): Likewise.
1067 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call,
1068 find_func_clobbers): Likewise.
1069 * tree.h (fold_builtin_strncpy_chk): Rename to fold_builtin_stxncpy_chk
1070 * builtins.c (fold_builtin_strncpy_chk): Likewise.
1071 Rewrite stpncpy_chk calls to strncpy_chk calls if returned value is
1074 2011-12-15 Richard Guenther <rguenther@suse.de>
1077 * gimple.c (compare_type_names_p): Also compare the TREE_CODE.
1078 (iterative_hash_name): Also hash the TREE_CODE.
1079 (gimple_types_compatible_p_1): For types with a TYPE_DECL
1080 name and a type DECL_CONTEXT recurse to that type.
1081 (iterative_hash_gimple_type): Likewise.
1083 2011-12-15 Iain Sandoe <iains@gcc.gnu.org>
1085 * config/rs6000/rs6000.c (rs6000_emit_prologue): Move update of
1086 VRSave mask to save_world() when that is in use.
1088 2011-12-15 Richard Guenther <rguenther@suse.de>
1090 * lto-wrapper.c (run_gcc): In non-parallel mode remove
1091 ltrans inputs immediately after processing them. In parallel
1092 mode truncate the ltrans inputs in the make rule that processes
1093 them if temporary files are not to be preserved.
1095 2011-12-15 Anatoly Sokolov <aesok@post.ru>
1097 * config/arm/arm.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
1098 * config/arm/arm.c (arm_memory_move_cost, arm_register_move_cost):
1100 (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
1102 2011-12-15 Richard Guenther <rguenther@suse.de>
1105 * tree.h (REGISTER_DEFS_IN_THIS_STMT, NECESSARY,
1106 STMT_IN_SSA_EDGE_WORKLIST): Remove no longer existing flag
1108 (TREE_ASM_WRITTEN): Update documentation to mention its use
1109 on TYPE_DECLs from debug info generation.
1110 * tree-streamer-out.c (pack_ts_base_value_fields): Stream
1111 TREE_ASM_WRITTEN as always zero for TYPE_DECLs, similar to
1114 2011-12-15 Georg-Johann Lay <avr@gjlay.de>
1117 * config/avr/avr.c (expand_epilogue): Don't build SUBREG of fp.
1118 (avr_prologue_setup_frame): Ditto.
1120 2011-12-15 Jakub Jelinek <jakub@redhat.com>
1123 * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test
1124 !DECL_IGNORED_P instead of !DECL_ARTIFICIAL.
1126 2012-12-15 Richard Guenther <rguenther@suse.de>
1130 * lto-streamer-out.c (tree_is_indexable): Exclude block-local
1131 extern declarations.
1135 * tree-streamer-out.c (streamer_write_chain): Stream DECL_EXTERNAL
1136 VAR_DECLs and FUNCTION_DECLs locally.
1138 2011-12-14 Richard Henderson <rth@redhat.com>
1140 * config/arm/arm.md (*addsi3_compare0_scratch): Set predicable.
1141 (*compare_negsi_si, *compare_addsi2_op0): Likewise.
1142 (*compare_addsi2_op1, *zeroextractsi_compare0_scratch): Likewise.
1143 (*compareqi_eq0, *arm_cmpsi_insn, *arm_cmpsi_negshiftsi_si): Likewise.
1145 2011-12-14 Richard Guenther <rguenther@suse.de>
1147 * tree-cfg.c (replace_uses_by): Fixup TREE_CONSTANT for
1148 propagating all kinds of constants.
1150 2011-12-14 Richard Guenther <rguenther@suse.de>
1153 * lto-streamer-in.c (lto_read_body): Fixup local types
1154 TYPE_CANONICAL and variant chain.
1156 2011-12-14 Richard Guenther <rguenther@suse.de>
1158 * tree.c (free_lang_data_in_type): Do not clear fields
1159 dependent on debuginfo level setting.
1160 (find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
1161 * tree.h (TYPE_STUB_DECL): Properly check that we access a type.
1163 2011-12-14 Georg-Johann Lay <avr@gjlay.de>
1166 * config/avr/avr.md (mulpsi3): New expander.
1167 (*umulqihipsi3, *umulhiqipsi3): New insns.
1168 (*mulsqipsi3.libgcc, *mulpsi3.libgcc): New insns.
1169 (mulsqipsi3, *mulpsi3): New insn-and-splits.
1170 (ashlpsi3): Turn to expander. Move insn code to...
1171 (*ashlpsi3): ...this new insn.
1173 2011-12-14 Richard Guenther <rguenther@suse.de>
1175 * tree-cfg.c (replace_uses_by): Only mark blocks altered
1176 that will make a difference. Only recompute ADDR_EXPR
1177 invariantness if it could possibly have changed. Do so
1178 before folding the statement.
1180 2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
1182 * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
1183 * lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
1184 * lto-streamer-in.c (lto_read_body): Likewise.
1185 (lto_input_toplevel_asms): Likewise.
1186 * lto-section-in.c (lto_create_simple_input_block): Likewise.
1187 * ipa-inline-analysis.c (inline_read_section): Likewise.
1188 * ipa-prop.c (ipa_prop_read_section): Likewise.
1190 * df.h (DF_NOTE): Fix typo in comment.
1192 2011-12-13 Aldy Hernandez <aldyh@redhat.com>
1194 * trans-mem.c (ipa_tm_create_version_alias): Set DECL_CONTEXT and
1197 2011-12-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1199 * regmove.c (fixup_match_2): Only access call_used_regs with hard regs.
1201 2011-12-13 Andrew Pinski <apinski@cavium.com>
1202 Adam Nemet <anemet@caviumnetworks.com>
1204 * config/mips/mips-cpus.def: Add Octeon2.
1205 * config/mips/mips-tables.opt: Regenerate.
1206 * config/mips/mips.md (define_attr "cpu"): Add Octeon2.
1207 * config/mips/driver-native.c (host_detect_local_cpu): Support Octeon2.
1208 * config/mips/octeon.md (octeon_arith): Add Octeon2.
1209 (octeon_condmove): Likewise.
1210 (octeon_load): Rename to ..
1211 (octeon_load_o1): this.
1212 (octeon_load_o2): New reserve.
1213 (octeon_cop_o2): New reserve.
1214 (octeon_store): Match Octeon2 also.
1215 (octeon_brj): Rename to ..
1216 (octeon_brj_o1): this.
1217 (octeon_brj_o2): New reserve.
1218 (octeon_imul3): Rename to ...
1219 (octeon_imul3_o1): this.
1220 (octeon_imul3_o2): New reserve.
1221 (octeon_imul): Rename to ...
1222 (octeon_imul_o1): this.
1223 (octeon_imul_o2): New reserve.
1224 (octeon_mfhilo): Rename to ...
1225 (octeon_mfhilo_o1): This.
1226 (octeon_mfhilo_o2): New reserve.
1227 (octeon_imadd): Rename to ...
1228 (octeon_imadd_o1): this.
1229 (octeon_imadd_o2): New reserve.
1230 (octeon_idiv): Rename to ..
1231 (octeon_idiv_o1): This.
1232 (octeon_idiv_o2_si): New reserve.
1233 (octeon_idiv_o2_di): Likewise.
1234 (octeon_unknown): Match Octeon2 also.
1235 * config/mips/mips.c (mips_rtx_cost_data): Add Octeon2 cost data.
1236 (mips_issue_rate): Octeon2 can issue 2 at a time.
1237 * config/mips/mips.h (TARGET_OCTEON): Match Octeon2 also.
1238 (TARGET_OCTEON2): New define.
1239 (TUNE_OCTEON): Match Octeon2 also.
1241 2011-12-13 Richard Henderson <rth@redhat.com>
1243 * config/sparc/tso.h: New file.
1244 * config.gcc (sparc-*-linux*, sparc*-*-solaris2*): Use it.
1245 * config/sparc/sparc.c (sparc_option_override): Honor
1246 SUBTARGET_DEFAULT_MEMORY_MODEL.
1247 * config/sparc/sparc.h (SUBTARGET_DEFAULT_MEMORY_MODEL): New.
1249 2011-12-13 Aldy Hernandez <aldyh@redhat.com>
1252 * trans-mem.c (struct diagnose_tm): Remove saw_unsafe.
1253 (diagnose_tm_1): Same.
1254 (ipa_tm_execute): Do not test tm_may_enter_irr before we set it.
1255 (ipa_tm_scan_irr_function): Return gracefully when no
1256 DECL_STRUCT_FUNCTION.
1257 (ipa_tm_scan_irr_block): Believe the user on TM attributes.
1259 2011-12-13 Martin Jambor <mjambor@suse.cz>
1262 * tree-sra.c (propagate_subaccesses_across_link): Do not propagate
1263 sub-accesses of scalar accesses.
1265 2011-12-13 Martin Jambor <mjambor@suse.cz>
1267 PR tree-optimization/51362
1268 * ipa-cp.c (estimate_local_effects): When estimated size of a
1269 specialized clone is zero, bump it to one.
1271 2011-12-13 Richard Guenther <rguenther@suse.de>
1274 * tree.c (find_decls_types_r): Also walk DECL_ORIGINAL_TYPE.
1275 * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
1276 Stream DECL_ORIGINAL_TYPE.
1277 * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers):
1280 2011-12-13 Jakub Jelinek <jakub@redhat.com>
1283 2011-12-12 Jakub Jelinek <jakub@redhat.com>
1285 PR tree-optimization/51481
1286 * gimple-fold.c (gimple_fold_call): Call
1287 maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
1288 edges, but gimple_fold_builtin result can't throw.
1290 2011-12-13 Jakub Jelinek <jakub@redhat.com>
1291 Michael Matz <matz@suse.de>
1293 PR tree-optimization/51117
1294 * tree-eh.c (sink_clobbers): New function.
1295 (execute_lower_eh_dispatch): Call it for BBs ending with
1296 internally throwing RESX.
1297 * cfgexpand.c (add_scope_conflicts_1): Add all conflicts only
1298 at the first real instruction.
1300 2011-12-13 Tristan Gingold <gingold@adacore.com>
1302 * final.c (final_scan_insn): Guard the call to begin_epilogue
1305 2011-12-13 Tristan Gingold <gingold@adacore.com>
1307 * vmsdbgout.c (vmsdbgout_write_source_line): New function.
1308 (vmsdbgout_end_prologue): Call vmsdbgout_write_source_line.
1309 (vmsdbgout_begin_epilogue): Likewise.
1310 (vmsdbgout_end_epilogue): Likewise.
1311 (vmsdbgout_source_line): Move code to vmsdbgout_write_source_line.
1313 2011-12-13 Richard Guenther <rguenther@suse.de>
1316 * tree-cfg.c (replace_uses_by): Pass proper arguments to
1317 maybe_clean_or_replace_eh_stmt.
1319 2011-12-13 Richard Guenther <rguenther@suse.de>
1321 PR tree-optimization/51519
1322 * ipa-inline.c (edge_badness): Use edge growth in non-guessed
1323 branch probability case as well.
1325 2011-12-13 Revital Eres <revital.eres@linaro.org>
1327 * modulo-sched.c (mark_loop_unsched): Free bbs.
1329 2011-12-12 Jakub Jelinek <jakub@redhat.com>
1331 PR rtl-optimization/51495
1332 * function.c (thread_prologue_and_epilogue_insns): Don't add
1333 to bb_tail basic blocks that have EDGE_COMPLEX predecessor edges
1334 from basic blocks not needing prologue.
1336 PR tree-optimization/51481
1337 * gimple-fold.c (gimple_fold_call): Call
1338 maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
1339 edges, but gimple_fold_builtin result can't throw.
1341 2011-12-12 Vladimir Makarov <vmakarov@redhat.com>
1343 PR rtl-optimization/21617
1344 * ira-color.c (bucket_allocno_compare_func): Don't compare
1345 allocno classes. Compare number of hard registers needed.
1347 2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
1349 PR tree-optimization/50569
1350 * tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
1351 in the expression of MODEL instead of just the last one.
1353 2011-12-12 Jakub Jelinek <jakub@redhat.com>
1356 * calls.c (internal_arg_pointer_based_exp_scan): Don't use
1357 VEC_safe_grow_cleared if idx is smaller than VEC_length.
1359 2011-12-12 Richard Sandiford <richard.sandiford@linaro.org>
1362 * optabs.c (maybe_legitimize_operand_same_code): Use copy_to_mode_reg
1363 instead of force_reg. Do nothing if the address is already a
1364 non-virtual pseudo register.
1366 2011-12-12 Torvald Riegel <triegel@redhat.com>
1368 * gimplify.c (voidify_wrapper_expr): Add default handling for
1371 2011-12-12 Torvald Riegel <triegel@redhat.com>
1373 * tree-ssa-tail-merge.c (gimple_equal_p): Don't treat transaction
1376 2011-12-12 Iain Sandoe <iains@gcc.gnu.org>
1378 * config/darwin-sections.def (zobj_const_data_section): Fix over-
1379 length section name.
1381 2011-12-11 Richard Henderson <rth@redhat.com>
1383 * config/rs6000/rs6000.c (rs6000_expand_interleave): Use
1384 BYTES_BIG_ENDIAN, not TARGET_BIG_ENDIAN.
1386 2011-12-11 Jakub Jelinek <jakub@redhat.com>
1388 PR tree-optimization/51485
1389 * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on
1392 2011-12-11 Patrick Marlier <patrick.marlier@gmail.com>
1394 * trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove edge.
1396 2011-12-10 Richard Henderson <rth@redhat.com>
1398 * config/rs6000/altivec.md (altivec_vmrghb): Rewrite pattern as
1399 vec_select + vec_concat.
1400 (altivec_vmrghh, altivec_vmrghw, altivec_vmrghsf, altivec_vmrglb,
1401 altivec_vmrglh, altivec_vmrglw, altivec_vmrglsf): Likewise.
1402 (vec_perm_constv16qi): New.
1403 (vec_extract_evenv4si, vec_extract_evenv4sf, vpkuhum_nomode,
1404 vpkuwum_nomode, vec_extract_oddv8hi, vec_extract_oddv16qi,
1405 vec_interleave_high<VI>, vec_interleave_low<VI>): Remove.
1406 * config/rs6000/paired.md (paired_merge00): Rewrite pattern as
1407 vec_select + vec_concat.
1408 (paired_merge10, paired_merge01, paired_merge11): Likewise.
1409 (vec_perm_constv2sf): New.
1410 (vec_interleave_highv2sf, vec_interleave_lowv2sf,
1411 vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
1412 * config/rs6000/spe.md (spe_evmergehi): Rewrite pattern as
1413 vec_select + vec_concat.
1414 (spe_evmergehilo, spe_evmergelo, spe_evmergelohi): New.
1415 (vec_perm_constv2si): New.
1416 * config/rs6000/vector.md (vec_interleave_highv4sf,
1417 vec_interleave_lowv4sf, vec_interleave_high<VEC_64>,
1418 vec_interleave_low<VEC_64>): Remove.
1419 * config/rs6000/vsx.md (VS_double): New mode attribute.
1420 (UNSPEC_VSX_XXPERMDI): Remove.
1421 (vsx_xxpermdi_<VSX_L>_1): Rewrite pattern as vec_select + vec_concat.
1422 (vsx_xxmrghw_<VSX_W>, vsx_xxmrglw_<VSX_W>): Likewise.
1423 (vsx_xxpermdi_<VSX_L>): Change to expander.
1424 (vec_perm_const<VSX_D>): New.
1425 (vsx_mergel_<VSX_D>, vsx_mergeh_<VSX_D>): New.
1426 * config/rs6000/predicates.md (const_0_to_1_operand): New.
1427 (const_2_to_3_operand): New.
1428 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
1429 (altivec_expand_vec_perm_const): New.
1430 (rs6000_expand_vec_perm_const_1, rs6000_expand_vec_perm_const): New.
1431 (rs6000_vectorize_vec_perm_const_ok): New.
1432 (rs6000_do_expand_vec_perm): New.
1433 (rs6000_expand_extract_even, rs6000_expand_interleave): New.
1434 * config/rs6000/rs6000-builtin.def (VEC_MERGE*): Update rtx codes.
1435 * config/rs6000/rs6000-modes.def: Add double-wide vector modes.
1436 * config/rs6000/rs6000-protos.h: Update.
1438 2011-12-10 Richard Henderson <rth@redhat.com>
1440 * expr.c (expand_expr_real_2) [VEC_PERM_EXPR]: Avoid passing a
1441 CONST_INT to expand_vec_perm as the selector.
1442 * optabs.c (expand_vec_perm): Assert the selector is of a proper mode.
1444 2011-12-10 Richard Henderson <rth@redhat.com>
1446 * genmodes.c (struct mode_data): Remove wider_2x member.
1447 (blank_mode): Adjust initializer.
1448 (calc_wider_mode): Use XALLOCAVEC.
1449 (emit_move_wider): Select double-width same-element vectors for
1451 * machmode.h (GET_MODE_2XWIDER_MODE): Update documentation.
1452 * config/i386/i386.c (doublesize_vector_mode): Remove.
1453 (expand_vselect_vconcat): Use GET_MODE_2XWIDER_MODE instead.
1455 2011-12-10 Joern Rennecke <joern.rennecke@embecosm.com>
1457 * config/epiphany/epiphany.h (USE_LOAD_POST_INCREMENT): Define.
1458 (USE_LOAD_POST_DECREMENT, USE_STORE_POST_INCREMENT): Likewise.
1459 (USE_STORE_POST_DECREMENT): Likewise.
1461 * config/epiphany/epiphany.h (EPIPHANY_RETURN_REGNO): New macro,
1463 (INCOMING_RETURN_ADDR_RTX) .. this. Use EPIPHANY_RETURN_REGNO.
1464 (DWARF_FRAME_RETURN_COLUMN): New macro.
1466 * config/epiphany/epiphany-protos.h (epiphany_start_function): Declare.
1467 * config/epiphany/epiphany.c (epiphany_handle_interrupt_attribute):
1468 Split "timer" value into "timer0" and "timer1".
1469 Handle page_miss, message and wand. Don't handle static_flag.
1470 Adjust warning text.
1471 (epiphany_start_function): New function.
1472 (epiphany_compute_function_type): Split "timer" value into "timer0"
1473 and "timer1". Handle page_miss, message and wand.
1474 Don't handle static_flag.
1475 (epiphany_expand_epilogue): Don't use frame_insn for status / iret
1477 * config/epiphany/epiphany.h: ASM_DECLARE_FUNCTION_NAME: Define.
1478 (enum epiphany_function_type):
1479 Split EPIPHANY_FUNCTION_TIMER value into EPIPHANY_FUNCTION_TIMER0
1480 and EPIPHANY_FUNCTION_TIMER1.
1481 Remove EPIPHANY_FUNCTION_ILINK1 and EPIPHANY_FUNCTION_ILINK2 values.
1482 Add EPIPHANY_FUNCTION_PAGE_MISS and EPIPHANY_FUNCTION_MESSAGE values.
1483 Rename EPIPHANY_FUNCTION_STATIC_FLAG to EPIPHANY_FUNCTION_WAND.
1485 2011-12-10 Nathan Sidwell <nathan@acm.org>
1487 PR gcov-profile/51449
1488 * coverage.c (coverage_end_function): Always process the coverage
1491 2011-12-09 Aldy Hernandez <aldyh@redhat.com>
1494 * tree.c (build_common_builtin_nodes): Do not use TM_PURE
1495 attribute unless language has support for TM.
1496 * config/i386/i386.c (ix86_init_tm_builtins): Exit gracefully in
1497 the absence of TM builtins.
1499 2011-12-09 Eric Botcazou <ebotcazou@adacore.com>
1501 * gimple-fold.c (gimple_fold_stmt_to_constant_1) <GIMPLE_UNARY_RHS>:
1502 Also check the TYPE_MODE to recognize useless pointer conversions.
1504 2011-12-09 Jakub Jelinek <jakub@redhat.com>
1506 PR tree-optimization/51117
1507 * tree-eh.c (optimize_clobbers): Don't remove just one
1508 clobber, but all consecutive clobbers before RESX.
1509 Use gimple_clobber_p predicate.
1511 2011-12-09 Michael Meissner <meissner@linux.vnet.ibm.com>
1513 * config/rs6000/rs6000.c (altivec_expand_builtin): Call
1514 expand_call to return a valid funciton instead of return
1515 cosnt0_rtx/NULL_RTX if there was an error with the builtin.
1516 (altivec_expand_ld_builtin): Ditto.
1517 (rs6000_inner_target_options): If VSX is selected as a target
1518 attribute or pragma, enable ALTIVEC also.
1519 (rs6000_pragma_target_parse): Call rs6000_option_override_internal
1520 to do all of the standard processing when switching options,
1521 including redefining appropriate macros.
1523 PR rtl-optimization/51469
1524 * varasm.c (default_binds_local_p_1): If the symbol is a gnu
1525 indirect function, mark the symbol as non-local.
1527 2011-12-09 H.J. Lu <hongjiu.lu@intel.com>
1530 * Makefile.in (errors.o): Restored.
1532 2011-12-09 Richard Guenther <rguenther@suse.de>
1535 * tree.c (free_lang_data_in_decl): Remove freeing conditional
1538 2011-12-09 Joern Rennecke <joern.rennecke@embecosm.com>
1541 * emit-rtl.c (set_dst_reg_note): New function.
1542 * rtl.h (set_dst_reg_note): Declare.
1543 * optabs.c (expand_binop, expand_absneg_bit): Use set_dst_reg_note.
1544 (emit_libcall_block, expand_fix): Likewise.
1545 * function.c (assign_parm_setup_reg, expand_function_start): Likewise.
1546 * expmed.c (expand_mult_const, expand_divmod): Likewise.
1547 * reload1.c (gen_reload): Likewise.
1549 * dse.c (get_stored_val, get_call_args): Use gen_int_mode.
1550 * expmed.c (expand_divmod): Likewise.
1551 * combine.c (simplify_if_then_else): Likewise.
1553 2011-12-09 Kai Tietz <ktietz@redhat.com>
1555 * ira-color.c (print_hard_regs_subforest): Use
1556 HOST_WIDEST_INT_PRINT_DEC instead of %lld.
1557 (allocno_hard_regs): Change type of cost member to HOST_WIDEST_INT.
1558 (add_allocno_hard_regs): Change type of argument cost
1560 * ira-conflict.c (build_conflict_bit_table): Replace use
1561 of long-long by HOST_WIDEST_INT.
1563 2011-12-09 Georg-Johann Lay <avr@gjlay.de>
1566 * config/avr/avr.md (config/avr/avr.md, *sbix_branch_tmp): Use
1567 zero_extract:QIHI instead of zero_extract:HI.
1569 2011-12-09 Jakub Jelinek <jakub@redhat.com>
1570 Andrew Pinski <apinski@cavium.com>
1572 PR tree-optimization/51117
1573 * tree-eh.c (optimize_clobbers): New function.
1574 (execute_lower_eh_dispatch): Call it.
1576 2011-12-09 Richard Guenther <rguenther@suse.de>
1578 PR tree-optimization/51482
1579 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
1580 Make sure to only create REAL_TYPE and INTEGER_TYPE component vectors.
1582 2011-12-09 Kai Tietz <ktietz@redhat.com>
1584 * implicit-zee.c (num_realized): Change type to long.
1585 (num_ze_opportunities): Likewise.
1587 2011-12-08 Andrew Pinski <apinski@cavium.com>
1589 * config/mips/mips-cpus.def (octeon+): New CPU.
1590 * config/mips/mips-tables.opt: Regenerate.
1591 * config/mips/mips.h (MIPS_CPP_SET_PROCESSOR): Emit '+' as 'P'.
1593 2011-12-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1596 * tree-ssa-dom.c (enum expr_kind): Add EXPR_PHI.
1597 (struct hashable_expr): Add struct phi field.
1598 (initialize_hash_element): Handle phis; change to use XCNEWVEC.
1599 (hashable_expr_equal_p): Handle phis.
1600 (iterative_hash_hashable_expr): Likewise.
1601 (print_expr_hash_elt): Likewise.
1602 (free_expr_hash_elt): Likewise.
1603 (dom_opt_enter_block): Create equivalences from redundant phis.
1604 (eliminate_redundant_computations): Handle redundant phis.
1605 (lookup_avail_expr): Handle phis.
1607 2011-12-08 Jakub Jelinek <jakub@redhat.com>
1609 PR tree-optimization/51466
1610 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also copy
1613 2011-12-08 Richard Guenther <rguenther@suse.de>
1615 * tree-ssa-operands.c (add_stmt_operand): Do not mark stmts
1616 volatile when processing operands of an ADDR_EXPR.
1617 (get_indirect_ref_operands): Likewise.
1618 (get_tmr_operands): Likewise.
1619 (get_expr_operands): Likewise.
1621 2011-12-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1624 * config/s390/s390.c (s390_mainpool_finish): Emit the jump over
1625 the literal pool as jump insn.
1627 2011-12-08 Richard Guenther <rguenther@suse.de>
1629 PR tree-optimization/49772
1630 * tree-inline.c (optimize_inline_calls): Remove bail out on errors.
1632 2011-12-08 Richard Guenther <rguenther@suse.de>
1635 * lto-streamer-out.c (produce_symtab): Remove asserts.
1637 2011-12-08 Richard Guenther <rguenther@suse.de>
1640 * lto-streamer-out.c (tree_is_indexable): Localize variably
1641 modified types and their FIELD_DECLs.
1643 2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
1645 PR tree-optimization/51315
1646 * tree.h (get_object_or_type_alignment): Declare.
1647 * expr.c (get_object_or_type_alignment): Move to...
1648 * builtins.c (get_object_or_type_alignment): ...here. Add assertion.
1649 * tree-sra.c (tree_non_mode_aligned_mem_p): Rename to...
1650 (tree_non_aligned_mem_p): ...this. Add ALIGN parameter. Look into
1651 MEM_REFs and use get_object_or_type_alignment for them.
1652 (build_accesses_from_assign): Adjust for above change.
1653 (access_precludes_ipa_sra_p): Likewise.
1655 2011-12-08 Richard Guenther <rguenther@suse.de>
1658 * lto-streamer-out.c (tree_is_indexable): Exclude block-local
1659 extern declarations.
1661 2011-12-07 Andrew Pinski <apinski@cavium.com>
1664 * expr.c (do_store_flag): Rewrite code that looks for BIT_AND_EXPR for
1667 2011-12-07 Richard Guenther <rguenther@suse.de>
1669 PR tree-optimization/50823
1670 * ipa-inline.c (edge_badness): Do not account for the number of
1673 2011-12-07 Martin Jambor <mjambor@suse.cz>
1675 PR tree-optimization/50744
1676 * ipa-cp.c (good_cloning_opportunity_p): Assert size_cost is positive,
1677 compute evaluation in HOST_WIDEST_INT.
1678 (safe_add): New function
1679 (propagate_effects): Use safe_add to accumulate effects.
1681 2011-12-06 Joel Sherrill <joel.sherrill@oarcorp.com>
1683 * config/rs6000/rtems.h: Switch to using global_options_set
1684 in SUBSUBTARGET_OVERRIDE_OPTIONS.
1686 2011-12-06 David S. Miller <davem@davemloft.net>
1688 * config/sparc/visintrin.h: Add appropriate __VIS__ cpp protection.
1690 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1692 * config/avr/avr.c (avr_file_start): Fix missing ,
1694 2011-12-06 Jakub Jelinek <jakub@redhat.com>
1697 * config/i386/i386.c (ix86_emit_leave): Call ix86_add_cfa_restore_note
1700 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1702 Forward-port from gcc-4_6-branch r181936 2011-12-02.
1703 * config/avr/avr-mcus.def (avr_mcu_types): ATtiny4313 and
1704 AT86RF401 have a 16-bit SP (their manual is bogus).
1706 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1708 Forward-port from gcc-4_6-branch r181936 2011-12-02.
1711 * config/avr/avr.md (movhi_sp_r): Set insn condition to
1713 * config/avr/avr.c (output_movhi): Use "clr%B0" instead of "in
1714 %B0,__SP_H__" if AVR_HAVE_8BIT_SP.
1715 (avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
1717 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1721 * config/avr/avr.h (ADDR_SPACE_PGM, ADDR_SPACE_PGM1,
1722 ADDR_SPACE_PGM2, ADDR_SPACE_PGM3, ADDR_SPACE_PGM4,
1723 ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): Write as enum.
1724 (avr_addrspace_t): New typedef.
1725 (avr_addrspace): New declaration.
1726 * config/avr/avr-c.c (avr_toupper): New static function.
1727 (avr_register_target_pragmas, avr_cpu_cpp_builtins): Use
1728 avr_addrspace to get address space information.
1729 * config/avr/avr.c (avr_addrspace): New variable.
1730 (avr_out_lpm, avr_pgm_check_var_decl, avr_insert_attributes,
1731 avr_asm_named_section, avr_section_type_flags,
1732 avr_asm_select_section, avr_addr_space_address_mode,
1733 avr_addr_space_convert, avr_emit_movmemhi): Use it.
1734 (avr_addr_space_pointer_mode): Forward to avr_addr_space_address_mode.
1735 (avr_pgm_segment): Remove.
1737 2011-12-06 Richard Guenther <rguenther@suse.de>
1740 * varasm.c (assemble_alias): Move DECL_EXTERNAL implementation
1741 quirk adjustjment ...
1742 * passes.c (rest_of_decl_compilation): ... here.
1744 2011-12-06 Richard Guenther <rguenther@suse.de>
1747 * gimple-fold.c (gimplify_and_update_call_from_tree): Guard vdef check
1748 for the fact we do not have virtual operands when not optimizing.
1750 2011-12-06 Richard Guenther <rguenther@suse.de>
1752 PR tree-optimization/51245
1753 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces):
1755 (vn_reference_lookup_3): Use it. Properly valueize all refs we create.
1757 2011-12-06 Iain Sandoe <iains@gcc.gnu.org>
1759 * config/rs6000/rs6000.c (darwin_rs6000_override_options): Initialize
1762 2011-12-06 Richard Guenther <rguenther@suse.de>
1764 PR tree-optimization/51363
1765 * gimple.c (gimple_rhs_has_side_effects): Remove.
1766 * gimple.h (gimple_rhs_has_side_effects): Likewise.
1767 * tree-ssa-dom.c (optimize_stmt): Simplify conditional.
1769 2011-12-06 Alan Modra <amodra@gmail.com>
1772 * config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
1773 Do not mark r11 setup as frame-related. Pass correct offset to
1774 rs6000_emit_savres_rtx. Correct out-of-line rs6000_frame_related
1775 arguments. Correct sp_offset. Remove "offset" fudge from
1776 in-line rs6000_frame_related call. Rename misleading variable.
1777 Fix comments and whitespace. Tidy some expressions.
1778 (rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
1779 to r11 in out-of-line case. Correct sp_offset. Pass correct
1780 offset to rs6000_emit_savres_rtx. Rename misleading variable.
1781 Fix comments and whitespace. Tidy some expressions.
1782 (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
1783 adjustment when !saving_GPRs_inline. Correct register mode
1784 used in address calcs.
1785 (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
1786 !restoring_GPRs_inline.
1788 2011-12-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1790 * config/arm/vfp.md (*combine_vcvt_f64_<FCVTI32typename>): Fix
1791 formatting character for vmov.f64 case.
1793 2011-12-05 Jakub Jelinek <jakub@redhat.com>
1795 PR tree-optimization/51396
1796 * tree-ssa-math-opts.c (convert_mult_to_fma): Don't optimize
1797 if MUL_RESULT has zero uses.
1800 * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
1801 for debug info if scope is file_scope.
1804 * c-decl.c (c_finish_incomplete_decl, finish_decl): Call
1805 relayout_decl instead of layout_decl.
1807 2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
1809 * resource.c (init_resource_info): Only consider EXIT_IGNORE_STACK
1810 if there is in epilogue.
1812 2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
1814 * optabs.c (maybe_emit_sync_lock_test_and_set): Pass a null target
1815 to emit_library_call_value.
1816 (expand_atomic_compare_and_swap): Likewise.
1818 2011-12-05 Vladimir Makarov <vmakarov@redhat.com>
1821 * ira-int.h (struct ira_object): Remove add_data.
1822 (OBJECT_ADD_DATA): Remove.
1824 * ira-build.c (ira_create_object): Remove OBJECT_ADD_DATA
1827 * ira-color.c (object_hard_regs_t, object_hard_regs): Rename to
1828 allocno_hard_regs_t, allocno_hard_regs.
1829 (object_hard_regs_node_t, object_hard_regs_node): Rename to
1830 allocno_hard_regs_node_t and allocno_hard_regs_node.
1831 (struct allocno_color_data): Add new member last_process. Move
1832 profitable_hard_regs, hard_regs_node, and hard_regs_subnodes_start
1833 from object_color_data.
1834 (object_color_data_t, object_color_data, OBJECT_COLOR_DATA): Remove.
1835 (curr_allocno_process): New static variable.
1836 (object_hard_regs_eq, object_hard_regs_htab): Rename to
1837 allocno_hard_regs_eq and allocno_hard_regs_htab.
1838 (init_object_hard_regs, finish_object_hard_regs): Rename to
1839 init_allocno_hard_regs and finish_allocno_hard_regs.
1840 (object_hard_regs_compare, object_hard_regs_node_t): Rename to
1841 allocno_hard_regs_compare and allocno_hard_regs_node_t.
1842 (create_new_object_hard_regs_node): Rename to
1843 create_new_allocno_hard_regs_node.
1844 (add_new_object_hard_regs_node_to_forest): Rename to
1845 add_new_allocno_hard_regs_node_to_forest.
1846 (add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
1847 Rename to add_allocno_hard_regs_to_forest and
1848 collect_allocno_hard_regs_cover.
1849 (setup_object_hard_regs_nodes_parent): Rename to
1850 setup_allocno_hard_regs_nodes_parent.
1851 (remove_unused_object_hard_regs_nodes): Rename to
1852 remove_unused_allocno_hard_regs_nodes.
1853 (enumerate_object_hard_regs_nodes, object_hard_regs_nodes_num):
1854 Rename to enumerate_allocno_hard_regs_nodes and
1855 allocno_hard_regs_nodes_num.
1856 (object_hard_regs_nodes, object_hard_regs_subnode_t): Rename to
1857 allocno_hard_regs_nodes and allocno_hard_regs_subnode_t.
1858 (object_hard_regs_subnode, object_hard_regs_subnodes): Rename to
1859 allocno_hard_regs_subnode and allocno_hard_regs_subnodes.
1860 (object_hard_regs_subnode_index): Rename to
1861 allocno_hard_regs_subnode_index.
1862 (setup_object_hard_regs_subnode_index): Rename to
1863 setup_allocno_hard_regs_subnode_index.
1864 (get_object_hard_regs_subnodes_num): Rename to
1865 get_allocno_hard_regs_subnodes_num.
1866 (form_object_hard_regs_nodes_forest): Rename to
1867 form_allocno_hard_regs_nodes_forest.
1868 (finish_object_hard_regs_nodes_tree): Rename to
1869 form_allocno_hard_regs_nodes_forest
1870 (finish_object_hard_regs_nodes_forest): Rename to
1871 finish_allocno_hard_regs_nodes_forest.
1872 (setup_left_conflict_sizes_p): Use allocno data instead of object ones.
1873 Process conflict allocnos once.
1874 (update_left_conflict_sizes_p): Use allocno data instead of object
1875 ones. Change prototype signature.
1876 (empty_profitable_hard_regs): Use allocno data instead of object ones.
1877 (setup_profitable_hard_regs): Ditto.
1878 (get_conflict_profitable_regs): Rename to
1879 get_conflict_and_start_profitable_regs. Use allocno data for
1880 profitable regs calculation.
1881 (check_hard_reg_p): Change prototype signature. Check profitable
1882 regs for allocno not the objects.
1883 (assign_hard_reg): Process conflict allocnos only once for
1884 updating conflict costs.
1885 (setup_allocno_available_regs_num): Use allocno data instead of
1886 object ones. Modify debug output.
1887 (color_pass): Remove initialization and finalization of object
1890 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
1893 * config/arm/arm.md (*minmax_arithsi): Always require the else
1894 clause in the MINUS case.
1896 2011-12-05 Richard Guenther <rguenther@suse.de>
1898 PR tree-optimization/50904
1899 * tree-ssa-loop-im.c (struct mem_ref): Remove vops member.
1900 (MEM_ANALYZABLE): New.
1901 (memory_references): Remove clobbered_vops and vop_ref_map
1902 members, add all_refs_stored_in_loop member.
1903 (memref_free): Adjust.
1904 (mem_ref_alloc): Likewise.
1905 (gather_mem_refs_stmt): Do not record clobbers, instead
1906 record refs for unanalyzable stmts.
1907 (gather_mem_refs_in_loops): Do not propagate clobbers.
1908 (struct vop_to_refs_elt, vtoe_hash, vtoe_eq, vtoe_free,
1909 record_vop_access, get_vop_accesses, get_vop_stores,
1910 add_vop_ref_mapping): Remove.
1911 (create_vop_ref_mapping_loop): Adjust to simply record all stores.
1912 (analyze_memory_references): Adjust.
1913 (refs_independent_p): Check for not analyzable refs.
1914 (can_sm_ref_p): Likewise.
1915 (ref_indep_loop_p_1): Simplify.
1916 (tree_ssa_lim_finalize): Adjust.
1918 * tree-ssa-loop-im.c (stmt_cost): Simplify, use LIM_EXPENSIVE
1919 rather than magic constants. Assign zero cost to PAREN_EXPR
1920 and SSA_NAME copies. Assign cost proportional to the vector
1921 size for vector constructors.
1923 2011-12-05 Richard Guenther <rguenther@suse.de>
1925 * tree-ssa-alias.h (struct ao_ref_s): Add volatile_p field.
1926 * tree-ssa-alias.c (ao_ref_init): Initialize it.
1927 (ao_ref_init_from_ptr_and_size): Likewise.
1928 (refs_may_alias_p_1): Two volatile accesses conflict.
1929 (ref_maybe_used_by_call_p_1): Likewise.
1930 (call_may_clobber_ref_p_1): Likewise.
1931 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Initialize
1934 2011-12-05 Richard Guenther <rguenther@suse.de>
1936 * tree-ssa.c (verify_ssa): Verify SSA names in the loop over all SSA
1937 names. Remove SSA operand checking, call verify_ssa_operands.
1938 * tree-ssa-operands.h (verify_ssa_operands): Declare.
1939 * tree-ssa-operands.c (verify_ssa_operands): New function.
1941 2011-12-05 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1943 * config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
1944 * config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
1945 * config/arm/constraints.md ("Dt"): New constraint.
1946 * config/arm/predicates.md
1947 (const_double_vcvt_power_of_two_reciprocal): New.
1948 * config/arm/vfp.md (FCVTI32typename): New.
1949 (FCVT): New iterator.
1950 (*combine_vcvt_f32_<FCVTI32typename>): New.
1951 (*combine_vcvt_f64_<FCVTI32typename>): New.
1953 2011-12-05 Richard Guenther <rguenther@suse.de>
1955 * cgraph.c (cgraph_create_edge_1): Initialize
1956 call_stmt_cannot_inline_p from the stmt if possible.
1957 (cgraph_make_edge_direct): Likewise.
1958 * gimple-streamer-in.c (input_gimple_stmt): Do not
1959 call gimple_call_set_cannot_inline.
1960 * gimple.h (enum gf_mask): Remove GF_CALL_CANNOT_INLINE, shift values.
1961 (gimple_call_set_cannot_inline): Remove.
1962 (gimple_call_cannot_inline_p): Likewise.
1963 * ipa-inline-analysis.c (initialize_inline_failed): Look
1964 at the edge call_stmt_cannot_inline_p flag.
1965 * ipa-inline.c (can_inline_edge_p): Likewise.
1966 (early_inliner): Only update the edge flag.
1967 * ipa-prop.c (update_indirect_edges_after_inlining): Likewise.
1968 (ipa_modify_call_arguments): Do not call gimple_call_set_cannot_inline.
1969 * cgraphunit.c (assemble_thunk): Likewise.
1970 * gimple-fold.c (gimple_fold_call): Likewise.
1972 * tree.h (CALL_CANNOT_INLINE_P): Remove.
1973 * tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
1974 * builtins.c (expand_builtin_alloca): With -fmudflap do not expand
1975 alloca calls inline.
1976 * cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
1977 * gimple.c (gimple_build_call_from_tree): Do not read
1978 CALL_CANNOT_INLINE_P.
1979 * gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.
1981 2011-12-05 Jakub Jelinek <jakub@redhat.com>
1982 Eric Botcazou <ebotcazou@adacore.com>
1986 * calls.c (internal_arg_pointer_exp_state): New variable.
1987 (internal_arg_pointer_based_exp_1,
1988 internal_arg_pointer_exp_scan): New functions.
1989 (internal_arg_pointer_based_exp): New function.
1990 (mem_overlaps_already_clobbered_arg_p): Use it.
1991 (expand_call): Free internal_arg_pointer_exp_state.cache vector
1992 and clear internal_arg_pointer_exp_state.scan_start.
1994 2011-12-04 Kaz Kojima <kkojima@gcc.gnu.org>
1996 * config/sh/linux.h (TARGET_DEFAULT): Add MASK_SOFT_ATOMIC.
1997 * config/sh/sync.md: New file.
1998 * config/sh/sh.md: Include sync.md.
1999 * config/sh/sh.opt (msoft-atomic): New option.
2000 * doc/invoke.texi (SH Options): Document it.
2002 2011-12-04 Nathan Sidwell <nathan@acm.org>
2004 * gcov-io.h (struct gcov_info): Replace trailing array with
2006 * profile.c (branch_prob): Only call renamed
2007 coverage_begin_function once.
2008 * coverage.h (coverage_begin_output): Rename to ...
2009 (coverage_begin_function): ... here.
2010 * coverage.c (struct function_list): Rename to ...
2011 (struct coverage_data): ... this. Update all uses.
2012 (gcov_info_var, gcov_fn_info_type, gcov_fn_info_ptr_type): New globals.
2013 (bbg_file_opened, bbg_function_announced): Remove.
2014 (get_coverage_counts): Adjust message.
2015 (coverage_begin_ouput): Rename to ...
2016 (coverage_begin_function): ... here. Move file opening to
2017 coverage_init. Adjust for being called only once.
2018 (coverage_end_function): Remove bbg file and inhibit further
2019 output here on error.
2020 (build_info_type): Adjust for change to pointer to array.
2021 (build_info): Receive array of function pointers and adjust.
2022 (create_coverage): Break into ...
2023 (coverage_obj_init, coverage_obj_fn, coverage_obj_finish):
2024 ... these, and adjust.
2025 (coverage_init): Open the notes file here. Tidy.
2026 (coverage_finish): Call coverage_obj_init etc.
2028 2011-12-04 Ira Rosen <ira.rosen@linaro.org>
2031 * tree-vect-loop.c (vect_create_epilog_for_reduction): Create exit
2032 phi nodes for outer loop in case of double reduction.
2034 2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
2037 * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
2038 parameter as long long.
2040 2011-12-04 Richard Sandiford <rdsandiford@googlemail.com>
2043 * optabs.c (init_sync_libfuncs): Use "or" rather than "ior"
2044 in the external names.
2046 2011-12-03 Jack Howarth <howarth@bromo.med.uc.edu>
2048 * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Pass -no_pie for
2049 non-PIC code when targeting 10.7 or later.
2051 2011-12-03 Iain Sandoe <iains@gcc.gnu.org>
2053 * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when
2055 (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10.
2056 (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10.
2058 2011-12-03 Jakub Jelinek <jakub@redhat.com>
2060 * fold-const.c (fold_unary_loc): Fold VEC_UNPACK_LO_EXPR,
2061 VEC_UNPACK_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
2062 VEC_UNPACK_FLOAT_HI_EXPR with VECTOR_CST argument.
2063 (fold_binary_loc): Fold VEC_PACK_TRUNC_EXPR,
2064 VEC_PACK_FIX_TRUNC_EXPR, VEC_WIDEN_MULT_LO_EXPR
2065 and VEC_WIDEN_MULT_HI_EXPR with VECTOR_CST arguments.
2068 * tree-ssa.c (target_for_debug_bind): Also allow is_gimple_reg_type
2069 vars that aren't referenced.
2070 (tree-ssa-live.c (remove_unused_locals): Don't clear TREE_ADDRESSABLE
2071 of unreferenced local vars.
2072 * cfgexpand.c (expand_debug_expr): For DEBUG_IMPLICIT_PTR allow also
2073 TREE_ADDRESSABLE vars that satisfy target_for_debug_bind.
2075 2011-12-03 Anatoly Sokolov <aesok@post.ru>
2077 * config/arm/arm.h (LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Remove.
2078 * config/arm/arm-protos.h (aapcs_libcall_value): Remove.
2079 * config/arm/arm.c (TARGET_FUNCTION_VALUE_REGNO_P): Define.
2080 (arm_libcall_value_1, arm_function_value_regno_p): New function.
2081 (arm_function_value, arm_libcall_value): Use arm_libcall_value_1.
2082 (aapcs_libcall_value): Make static.
2083 (arm_libcall_value): Add static qualifier.
2085 2011-12-02 Jakub Jelinek <jakub@redhat.com>
2088 * config/i386/sse.md (mul<mode>3 with VI1_AVX2 iterator): For
2089 V32QImode use { 0,2,..,14,32,34,..,46,16,18,..,30,48,50,..,62 }
2090 permutation instead of extract even permutation.
2092 2011-12-02 Nathan Sidwell <nathan@acm.org>
2094 * gcov.c (struct arc_info): Add is_throw field.
2095 (struct (block_info): Add exceptional field, reduce flags size to
2097 (struct function_info): Add has_catch field.
2098 (struct line_info): Add unexceptional field.
2099 (process_file): Call find_exception_blocks if necessary.
2100 (read_graph_file): Adjust. Note if an exceptional edge is seen.
2101 (find_exception_blocks): New.
2102 (add_line_counts): Set line's unexceptional flag if not exceptional.
2103 (output_branch_count): Note exceptional arcs, lines and blocks.
2104 * gcov-dump.c (tag_arcs): Decode arc flags.
2105 * doc/gcov.texi: Document '=====' lines.
2107 2011-12-02 Anatoly Sokolov <aesok@post.ru>
2109 * config/ia64/ia64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS,
2110 PRINT_OPERAND_PUNCT_VALID_P): Remove macros.
2111 * config/ia64/ia64-protos.h (ia64_print_operand,
2112 ia64_print_operand_address): Remove.
2113 * config/ia64/ia64.c (TARGET_PRINT_OPERAND,
2114 TARGET_PRINT_OPERAND_ADDRESS, TARGET_PRINT_OPERAND_PUNCT_VALID_P):
2116 (ia64_print_operand_punct_valid_p): New function.
2117 (ia64_print_operand, ia64_print_operand_address): Make static.
2119 2011-12-02 Michael Meissner <meissner@linux.vnet.ibm.com>
2122 * config/rs6000/rs6000.c (def_builtin): Use the correct field to
2123 figure out the function's attributes.
2124 (struct builtin_description): Mark mask field as const since we no
2125 longer need to modify it for SPE and PAIRED builtins.
2127 2011-12-02 Joseph Myers <joseph@codesourcery.com>
2131 2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com>
2134 * loop-doloop.c (doloop_modify): New argument zero_extend_p and
2135 zero extend count after the correction to it is done.
2136 (doloop_optimize): Update call to doloop_modify, don't zero extend
2139 2008-11-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
2142 * loop-doloop.c (doloop_modify): Add from_mode argument that says what
2144 (doloop_optimize): Update call to doloop_modify.
2146 2011-12-02 Richard Guenther <rguenther@suse.de>
2149 * ipa.c (varpool_externally_visible_p): Register variables
2150 are always externally visible.
2152 2011-12-02 Sameera Deshpande <sameera.deshpande@arm.com>
2154 * gimple-pretty-print.c (dump_gimple_call): Dereference fn only if
2157 2011-12-02 Martin Jambor <mjambor@suse.cz>
2159 PR tree-optimization/50622
2160 * tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
2161 if both lacc and racc are grp_partial_lhs.
2163 2011-12-01 Kaz Kojima <kkojima@gcc.gnu.org>
2166 * config/sh/sh.c (expand_ashiftrt): Handle TARGET_SH2A same as
2168 (shl_sext_kind): Likewise.
2169 * config/sh/sh.h (SH_DYNAMIC_SHIFT_COST): Likewise.
2170 * config/sh/sh.md (ashlsi3_sh2a, ashrsi3_sh2a, lshrsi3_sh2a): Remove.
2171 (ashlsi3_std): Handle TARGET_SH2A same as TARGET_SH3.
2172 (ashlsi3): Likewise.
2173 (ashrsi3_d): Likewise.
2174 (lshrsi3_d): Likewise.
2175 (lshrsi3): Likewise.
2177 2011-12-01 Diego Novillo <dnovillo@google.com>
2180 * ipa-inline.c (can_inline_edge_p): If the edge E has a statement,
2181 use the statement's inline indicator instead of E's.
2182 Remove consistency check.
2184 2011-12-01 Diego Novillo <dnovillo@google.com>
2189 2011-11-29 Diego Novillo <dnovillo@google.com>
2191 * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
2192 Update field call_stmt_cannot_inline_p from call
2193 graph edge, if needed.
2194 * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
2196 2011-12-01 Nathan Sidwell <nathan@acm.org>
2198 PR gcov-profile/51113
2199 * coverage.c (build_var): Keep coverage variables static.
2201 2011-12-01 Jakub Jelinek <jakub@redhat.com>
2203 PR tree-optimization/51356
2204 * tree-vect-patterns.c (vect_recog_bool_pattern): Give up if
2205 vectype doesn't have VECTOR_MODE_P.
2208 * tree-ssa-dce.c (remove_dead_stmt): Add a debug stmt when removing
2209 as unnecessary a store to a variable with gimple reg type.
2210 * tree-ssa-live.c (remove_unused_locals): Clear TREE_ADDRESSABLE bit
2211 on local unreferenced variables.
2212 * cfgexpand.c (expand_gimple_basic_block): Don't emit DEBUG_INSNs
2213 for !target_for_debug_bind variables.
2215 2011-12-01 Patrick Marlier <patrick.marlier@gmail.com>
2218 * cgraph.h (cgraph_call_node_duplication_hooks): Declare.
2219 * cgraph.c (cgraph_call_node_duplication_hooks): Make global.
2220 * cgraphunit.c (cgraph_copy_node_for_versioning): Call it.
2222 2011-12-01 Andrew Pinski <apinski@cavium.com>
2225 * tree.c (free_lang_data_in_decl): Clear FIELD_DECL's
2228 2011-12-01 Jakub Jelinek <jakub@redhat.com>
2230 PR tree-optimization/51246
2231 * tree-predcom.c (replace_ref_with): Handle also clobber on the rhs.
2233 PR rtl-optimization/51014
2234 * loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs
2235 both from bb and orig_bb.
2237 2011-12-01 Joern Rennecke <joern.rennecke@embecosm.com>
2239 PR tree-optimization/50802
2240 * tree-vrp.c (simplify_conversion_using_ranges): Rewrite test
2241 considering what happens to ranges during sign changes and/or
2242 intermediate narrowing conversions.
2244 2011-11-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2247 * config/pa/pa.md (in_branch_delay): Disallow frame related insns.
2248 (in_nullified_branch_delay): Likewise.
2249 (in_call_delay): Likewise.
2251 2011-11-30 Richard Henderson <rth@redhat.com>
2253 * predict.c (expr_expected_value_1): Assume compare-and-swap builtin
2254 boolean return is true.
2256 2011-11-30 Jakub Jelinek <jakub@redhat.com>
2258 PR rtl-optimization/51044
2259 * dse.c (emit_inc_dec_insn_before): Ensure new_insn is an instruction
2260 rather than just insn body.
2263 * function.c (thread_prologue_and_epilogue_insns): If
2264 stack_realign_drap, add drap_reg to SET_UP_BY_PROLOGUE
2268 * tree-eh.c (cleanup_empty_eh_merge_phis): Add check to
2269 avoid creating duplicate edges here.
2270 (cleanup_empty_eh_unsplit): And remove it in the caller.
2272 2011-11-30 Andrew Pinski <apinski@cavium.com>
2275 * c-parser.c (c_parser_postfix_expression): Check groktypename results
2276 before looking at the main variant.
2278 2011-11-30 Jakub Jelinek <jakub@redhat.com>
2280 PR rtl-optimization/48721
2281 * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set
2282 reg_pending_barrier to TRUE_BARRIER.
2284 PR rtl-optimization/48721
2285 * sched-ebb.c (begin_move_insn): Insert empty unreachable
2286 block after BARRIER if insn is followed by it.
2288 2011-11-30 Richard Henderson <rth@redhat.com>
2290 * config/sparc/sparc-opts.h (enum sparc_memory_model_type): New.
2291 * config/sparc/sparc.opt (mmemory-model=): New option.
2292 * doc/invoke.texi (Sparc Options): Document it.
2293 * config/sparc/sparc.c (sparc_option_override): Provide default
2294 for sparc_memory_model.
2295 (sparc_emit_membar_for_model): Omit barrier combinations that are
2296 implied by the memory model.
2298 2011-11-30 Richard Henderson <rth@redhat.com>
2300 * config/sparc/sync.md (I124MODE): New mode iterator.
2301 (memory_barrier): Remove.
2302 (atomic_exchangesi): New.
2303 (swapsi): Rename from *swapsi.
2304 (atomic_test_and_set<I124MODE>): New.
2305 (ldstubqi): Rename from *ldstubqi, merge with expander.
2306 (ldstub<I24MODE>): Rename from *ldstub<I24MODE>, merge with expander.
2307 (sync_lock_test_and_setsi): Remove.
2308 (sync_lock_test_and_set<I12MODE>): Remove.
2310 2011-11-30 Richard Henderson <rth@redhat.com>
2312 * config/sparc/constraints.md ("w"): New.
2313 * config/sparc/predicates.md (mem_noofs_operand): New.
2314 * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Make static.
2315 Generate the boolean result of the atomic_compare_exchange.
2316 (sparc_expand_compare_and_swap): New.
2317 * config/sparc/sync.md (atomic_compare_and_swap<I>): New.
2318 (atomic_compare_and_swap<I48MODE>_1): Rename from
2319 *sync_compare_and_swap<I48MODE>, use mem_noofs_operand.
2320 (*atomic_compare_and_swapdi_v8plus): Rename from
2321 *sync_compare_and_swapdi_v8plus, use mem_noofs_operand.
2322 (sync_compare_and_swap<I12MODE>): Remove.
2323 (sync_compare_and_swap<I48MODE>): Remove.
2325 2011-11-30 Richard Henderson <rth@redhat.com>
2327 * config/sparc/predicates.md (register_or_v9_zero_operand): New.
2328 * config/sparc/sparc.md (UNSPEC_ATOMIC): New.
2329 * config/sparc/sync.md (atomic_load<I>): New.
2330 (atomic_loaddi_1, atomic_store<I>, atomic_storedi_1): New.
2332 2011-11-30 Richard Henderson <rth@redhat.com>
2334 * config/sparc/predicates.md (zero_or_v7_operand): New.
2335 * config/sparc/sparc.c (sparc_emit_membar_for_model): New.
2336 * config/sparc/sparc-protos.h: Update.
2337 * config/sparc/sync.md (mem_thread_fence): New.
2338 (memory_barrier): Use sparc_emit_membar_for_model.
2339 (membar, *membar_empty, *membar_storestore, *membar_storeload): New.
2340 (*membar_v8): Accept and ignore the membar mask.
2341 (*membar): Accept and print the membar mask.
2343 2011-11-30 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
2345 * config/arm/arm.c (arm_issue_rate): Cortex-A15 can triple issue.
2346 * config/arm/arm.md (mul64): New attribute.
2347 (generic_sched): Cortex-A15 is not scheduled generically.
2348 (cortex-a15.md): Include.
2349 * config/arm/cortex-a15.md: New machine description.
2350 * config/arm/t-arm (MD_INCLUDES): Add cortex-a15.md.
2352 2011-11-30 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
2354 * config/arm/t-arm (MD_INCLUDES): Ensure all md files are listed.
2356 2011-11-30 Iain Sandoe <iains@gcc.gnu.org>
2358 * doc/tm.texi.in (NEXT_OBJC_RUNTIME): Update macro description.
2359 * doc/tm.texi: Regenerate.
2360 * flags.h (flag_next_runtime): Remove references.
2361 * toplev.c: Likewise.
2362 * defaults.h (NEXT_OBJC_RUNTIME): Provide default.
2363 * gccspec.c (lang_specific_driver): Adjust use of NEXT_OBJC_RUNTIME.
2364 * config/darwin.c (darwin_override_options): Provide default
2365 Objective-C abi settings and target conflict checks.
2366 * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Remove unused
2367 code. Adjust indenting.
2369 2011-11-29 Joseph Myers <joseph@codesourcery.com>
2371 * config/sh/sh.h (enum reg_class, REG_CLASS_NAMES)
2372 (REG_CLASS_CONTENTS): Add NON_SP_REGS.
2373 (REGCLASS_HAS_GENERAL_REG): Handle NON_SP_REGS.
2374 * config/sh/constraints.md (u): New constraint.
2376 2011-11-29 Oleg Endo <oleg.endo@t-online.de>
2379 * config/sh/sh.c (sh_secondary_reload): Add case when FPUL
2380 register is being loaded from a pseudo in memory.
2382 2011-11-29 DJ Delorie <dj@redhat.com>
2384 * config.gcc (rl78-*-elf): New case.
2385 * doc/extend.texi: Add RL78 documentation.
2386 * doc/invoke.texi: Likewise.
2387 * doc/md.texi: Likewise.
2388 * doc/contrib.texi: Add RL78.
2389 * doc/install.texi: Add rl78-*-elf.
2390 * config/rl78: New directory for the Renesas RL78.
2392 2011-11-29 Jakub Jelinek <jakub@redhat.com>
2394 PR tree-optimization/51247
2395 * tree-vrp.c (extract_range_from_assert): For signed 1-bit precision
2396 types instead of adding 1 subtract -1 and instead of subtracting 1
2397 add -1 to avoid overflows.
2399 2011-11-29 Andrew MacLeod <amacleod@redhat.com>
2402 * optabs.c (maybe_optimize_fetch_op): New. Look for more optimal
2403 instructions for a FECTH_OP or OP_FECTH sequence.
2404 (expand_atomic_fetch_op): Call maybe_optimize_fetch_op.
2406 2011-11-29 Uros Bizjak <ubizjak@gmail.com>
2408 * config/i386/sync.md (UNSPEC_LDA, UNSPEC_STA): New unspecs.
2409 (movdi_via_fpu): Remove.
2410 (loaddi_via_fpu): New insn pattern.
2411 (storedi_via_fpu): Ditto.
2412 (atomic_loaddi_fpu): Use loaddi_via_fpu and storedi_via_fpu.
2413 (atomic_storedi_fpu): Ditto.
2414 * reg-stack.c (get_true_reg): Handle UNSPEC_LDA.
2415 (subst_stack_regs_pat): Handle UNSPEC_STA.
2417 2011-11-29 Uros Bizjak <ubizjak@gmail.com>
2419 * config/i386/i386.md (*floathi<mode>2_i387_with_temp): Do not
2420 allocate scratch memory for alternative 0.
2422 2011-11-29 Michael Meissner <meissner@linux.vnet.ibm.com>
2424 * config/rs6000/rs6000-builtins.def: Completely rewrite builtin
2425 handling to centralize more of the builtins in this file. Change
2426 some builtin enumerations to be more consistant. Use a new mask
2427 to hold the current builtins, including SPE and PAIRED builtins
2428 which no longer are set via target_flags masks. Add
2429 -mdebug=builtin debug support. For power machines, define all
2430 Altivec and VSX buitins when the compiler starts, but don't allow
2431 the use of a builtin unless the appropriate switch is used, or
2432 #pragma GCC target is used to change the options. If the user
2433 uses #pragma GCC target, update the appropriate hardware macros.
2434 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Ditto.
2435 * config/rs6000/rs6000.opt (rs6000_builtin_mask): Ditto.
2436 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Ditto.
2437 (rs6000_define_or_undefine_macro): Ditto.
2438 (rs6000_target_modify_macros): Ditto.
2439 (rs6000_cpu_cpp_builtins): Ditto.
2440 (altivec_overloaded_builtins): Ditto.
2441 (altivec_build_resolved_builtin): Ditto.
2442 * config/rs6000/rs6000.c (rs6000_target_modify_macros_ptr): Ditto.
2443 (rs6000_builtin_info): Ditto.
2444 (def_builtin): Ditto.
2445 (enable_mask_for_builtins): Ditto.
2446 (DEBUG_FMT_X): Ditto.
2447 (rs6000_debug_reg_global): Ditto.
2448 (rs6000_builtin_mask_calculate): Ditto.
2449 (rs6000_option_override_internal): Ditto.
2450 (rs6000_builtin_conversion): Ditto.
2451 (rs6000_builtin_vectorized_function): Ditto.
2452 (bdesc_3arg): Ditto.
2454 (bdesc_2arg): Ditto.
2455 (builtin_description_predicates): Ditto.
2456 (bdesc_altivec_preds): Ditto.
2457 (bdesc_spe_predicates): Ditto.
2458 (bdesc_spe_evsel): Ditto.
2459 (bdesc_paired_preds): Ditto.
2461 (bdesc_1arg): Ditto.
2462 (rs6000_overloaded_builtin_p): Ditto.
2463 (rs6000_expand_unop_builtin): Ditto.
2464 (bdesc_2arg_spe): Ditto.
2465 (spe_expand_builtin): Ditto.
2466 (rs6000_invalid_builtin): Ditto.
2467 (rs6000_expand_builtin): Ditto.
2468 (rs6000_init_builtins): Ditto.
2469 (spe_init_builtins): Ditto.
2470 (paired_init_builtins): Ditto.
2471 (altivec_init_builtins): Ditto.
2472 (builtin_function_type): Ditto.
2473 (rs6000_common_init_builtins): Ditto.
2474 (rs6000_builtin_reciprocal): Ditto.
2475 (rs6000_builtin_mask_names): Ditto.
2476 (rs6000_pragma_target_parse): Ditto.
2477 (rs6000_function_specific_print): Ditto.
2478 * config/rs6000/rs6000.h (MASK_DEBUG_BUILTIN): Ditto.
2479 (MASK_DEBUG_ALL): Ditto.
2480 (TARGET_DEBUG_BUILTIN): Ditto.
2481 (TARGET_EXTRA_BUILTINS): Ditto.
2482 (REGISTER_TARGET_PRAGMAS): Ditto.
2483 (enum rs6000_btc): Ditto.
2484 (RS6000_BTC_*): Ditto.
2485 (RS6000_BTM_*): Ditto.
2486 (enum rs6000_builtins): Ditto.
2487 * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Ditto.
2488 (rs6000_target_modify_macros): Ditto.
2489 (rs6000_target_modify_macros_ptr): Ditto.
2491 * config/rs6000/vector.md (unsfloat<VEC_int><mode>2): Use the
2492 standard name for converting vector unsigned values to floating
2493 point. Delete the TARGET_VECTORIZE_BUILTIN_CONVERSION hook, which
2494 is handled by machine independent code.
2495 * config/rs6000/rs6000.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Ditto.
2496 (rs6000_builtin_conversion): Ditto.
2498 2011-11-29 Dodji Seketeli <dodji@redhat.com>
2500 * tree-diagnostic (struct loc_t): Rename into struct loc_map_pair.
2501 (maybe_unwind_expanded_macro_loc): Adjust.
2503 2011-11-29 David Edelsohn <dje.gcc@gmail.com>
2504 Aldy Hernandez <aldyh@redhat.com>
2506 * trans-mem.c (ipa_tm_create_version_alias): Mangle new_decl
2508 (ipa_tm_create_version): Same.
2510 2011-11-29 Bernd Schmidt <bernds@codesourcery.com>
2512 * haifa-sched.c (recompute_todo_spec): Simplify and correct the
2513 code checking for a clobber of a condition register when deciding
2514 whether to predicate.
2516 2011-11-29 Diego Novillo <dnovillo@google.com>
2518 * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
2519 Update field call_stmt_cannot_inline_p from call graph edge, if needed.
2520 * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
2522 2011-11-29 Sameera Deshpande <sameera.deshpande@arm.com>
2524 * config/arm/arm.md (arm_movdi): Update NEG_POOL_RANGE.
2525 (movdf_soft_insn): Likewise.
2526 * config/arm/fpa.md (thumb2_movdf_fpa): Likewise.
2527 * config/arm/neon.md (neon_mov<mode>): Likewise.
2528 * config/arm/vfp.md (movdi_vfp): Likewise.
2529 (movdi_vfp_cortexa8): Likewise.
2530 (movdf_vfp): Likewise.
2532 2011-11-29 Jakub Jelinek <jakub@redhat.com>
2535 * expr.c (expand_expr_addr_expr_1): Don't call force_operand for
2536 EXPAND_SUM modifier.
2538 2011-11-29 Ira Rosen <ira.rosen@linaro.org>
2540 PR tree-optimization/51301
2541 * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that
2542 the last statement doesn't convert to a bigger type than the original
2543 type of the computation.
2545 2011-11-28 Richard Henderson <rth@redhat.com>
2547 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
2548 Handle overlap between retval and oldval. Always compute boolval
2551 2011-11-28 Jakub Jelinek <jakub@redhat.com>
2554 * tree-ssa.c (execute_update_addresses_taken): Remove
2555 var ={v} {CLOBBER} stmts instead of rewriting them into
2556 var_N ={v} {CLOBBER}.
2559 * function.c (convert_jumps_to_returns): When redirecting an edge
2560 succ to EXIT_BLOCK_PTR, clear EDGE_CROSSING flag.
2562 PR tree-optimization/50078
2563 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over
2564 TREE_THIS_VOLATILE also from the old to new lhs resp. rhs.
2566 PR tree-optimization/50682
2567 * tree-eh.c (maybe_remove_unreachable_handlers): New function.
2568 * tree-flow.h (maybe_remove_unreachable_handlers): New prototype.
2569 * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Call it.
2571 2011-11-28 Georg-Johann Lay <avr@gjlay.de>
2573 * doc/extend.texi (AVR Built-in Functions): Add documentation for
2574 __builtin_avr_map8 and __builtin_avr_map16.
2576 * config/avr/avr.md: Document new %t and %T asm output codes.
2577 (define_c_enum "unspec"): Add UNSPEC_MAP_BITS.
2578 (adjust_len): Add map_bits.
2579 (map_bitsqi, map_bitshi): New insns.
2580 * config/avr/avr-protos.h (avr_out_map_bits): New.
2581 * config/avr/avr-protos.c (print_operand): Implement %t and %T.
2582 (adjust_insn_length): Handle ADJUST_LEN_MAP_BITS.
2583 (avr_double_int_push_digit): New function.
2584 (avr_map, avr_revert_map, avr_swap_map, avr_id_map): New functions.
2585 (avr_sig_map, avr_map_hamming_byte): New functions.
2586 (avr_out_swap_bits, avr_out_revert_bits, avr_move_bits,
2587 avr_out_map_bits): New functions.
2588 (enum avr_builtin_id): Add AVR_BUILTIN_MAP8, AVR_BUILTIN_MAP16.
2589 (avr_init_builtins): Populate __builtin_avr_map8, __builtin_avr_map16.
2590 (bdesc_2arg): Add __builtin_avr_map8, __builtin_avr_map16 ...
2591 (avr_expand_builtin): ...and expand them.
2592 * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in defines:
2593 __BUILTIN_AVR_MAP8, __BUILTIN_AVR_MAP16.
2595 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2598 * config/mips/mips.c (mips_rtx_costs): Handle baddu.
2600 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2602 * config/mips/mips.c (mips16_unextended_reference_p): Test for BLKmode.
2604 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2606 * config/mips/mips-protos.h (mips_emit_binary): Declare.
2607 * config/mips/mips.c (mips_emit_binary): Make global.
2608 (mips_set_mips16_mode): Turn off -mfix-r4000 in MIPS16 mode.
2609 (mips_conditional_register_usage): Don't treat LO and HI as
2610 register operands in MIPS16 mode.
2611 (mips_mulsidi3_gen_fn): Use {u,}mulsidi3_{32,64}bit_mips16
2613 * config/mips/predicates.md (muldiv_target_operand): New predicate.
2614 (move_operand): Allow hilo_operand.
2615 * config/mips/mips.md (mul<mode>3): Explicitly specify LO as the
2616 target of MIPS16 multiplies, then move it into the target register.
2617 (mul<mode>3_internal, *macc2, *msac2): Use muldiv_target_operand.
2618 (<u>mulsidi3_32bit_mips16): New expander.
2619 (<u>mulsidi3_32bit): Use muldiv_target_operand.
2620 (<u>mulsidi3_32bit_r4000): Disable for ISA_HAS_DSP.
2621 (<u>mulsidi3_64bit): Require !TARGET_MIPS16. Split into
2622 <u>mulsidi3_64bit_split.
2623 (<u>mulsidi3_64bit_mips16): New expander.
2624 (<u>mulsidi3_64bit_split): Likewise, using expansions from
2625 two previous define_splits.
2626 (<u>mulsidi3_64bit_hilo, *muls<u>_di, <u>msubsidi4): Use
2627 muldiv_target_operand.
2628 (<su>mulsi3_highpart): Use <su>mulsi3_highpart_split for MIPS16 code.
2629 (<su>mulsi3_highpart_internal): Require !TARGET_MIPS16.
2630 Split into <su>mulsi3_highpart_split.
2631 (<su>mulsi3_highpart_split): New expander.
2632 (<su>muldi3_highpart): Turn into a define_expand.
2633 Use <su>muldi3_highpart_split for MIPS16 code.
2634 (<su>muldi3_highpart_internal): Renamed from <su>muldi3_highpart.
2635 Require !TARGET_MIPS16. Split into <su>muldi3_highpart_split.
2636 (<su>muldi3_highpart_split): New expander.
2637 (<u>mulditi3): Explicitly specify LO as the target of MIPS16
2638 multiplies, then move it into the target register.
2639 (<u>mulditi3_internal, <u>maddsidi4): Use muldiv_target_operand.
2640 (divmod<mode>4, udivmod<mode>4): Turn into define_expands.
2641 Use <u>divmod<mode>4_split for MIPS16 code, then explicitly
2642 move LO into operand 0.
2643 (divmod<mode>4_internal, udivmod<mode>4_internal): Renamed
2644 from <u>divmod<mode>4. Use muldiv_target_operand.
2645 Require !TARGET_MIPS16. Split into <u>divmod<mode>4_split.
2646 (<u>divmod<mode>4_split): New expander.
2647 (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): Use muldiv_target_operand.
2648 (mfhi<GPR:mode>_<HILO:mode>): Use hilo_operand.
2650 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2652 * hard-reg-set.h (target_hard_regs): Add x_accessible_reg_set
2653 and x_operand_reg_set.
2654 (accessible_reg_set, operand_reg_set): New macros.
2655 * reginfo.c (init_reg_sets): Initialize accessible_reg_set and
2657 (saved_accessible_reg_set, saved_operand_reg_set): New variables.
2658 (save_register_info): Save them.
2659 (restore_register_info): Restore them.
2660 (init_reg_sets_1): Limit operand_reg_set to accessible_reg_set.
2661 Remove NO_REGS registers from operand_reg_set. Treat members
2662 of operand_reg_set as fixed.
2663 * recog.c (general_operand): Check operand_reg_set rather than NO_REGS.
2664 (register_operand, nonmemory_operand): Likewise.
2665 * varasm.c (make_decl_rtl): Always use DECL_MODE as the mode of
2666 register variables. Check accessible_reg_set and operand_reg_set.
2667 * config/mips/mips.c (mips_conditional_register_usage): Remove
2668 inaccessible register from accessible_reg_set, rather than just
2671 2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
2673 * config/pa/pa-linux.h (TARGET_GAS): Remove comment.
2675 2011-11-26 Richard Henderson <rth@redhat.com>
2677 * config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs
2680 2011-11-26 Richard Henderson <rth@redhat.com>
2682 * optabs.c (expand_atomic_fetch_op): Always return result.
2684 * optabs.c (init_sync_libfuncs_1): Include max in iteration.
2686 * omp-low.c (expand_omp_atomic): Assume anything aligned to
2687 BIGGEST_ALIGNMENT is aligned.
2689 2011-11-26 Richard Henderson <rth@redhat.com>
2691 * config/m68k/m68k.md (UNSPECV_CAS_1, UNSPECV_CAS_2): New.
2692 (UNSPECV_TAS_1, UNSPECV_TAS_2): New.
2693 (I): New mode iterator.
2694 (xz): New mode attribute.
2695 * config/m68k/sync.md: New file.
2697 * config/m68k/linux.h (TARGET_INIT_LIBFUNCS): New.
2698 * config/m68k/m68k.c (m68k_init_sync_libfuncs): New.
2700 2011-11-26 Nathan Sidwell <nathan@acm.org>
2702 PR gcov-profile/51297
2703 * gcov.c (main): Allocate initial names and sources arrays.
2704 (find_source): Don't check for null name or source arrays here.
2706 2011-11-26 Jakub Jelinek <jakub@redhat.com>
2708 PR rtl-optimization/49912
2709 * cfgrtl.c (rtl_verify_flow_info_1): Ignore also EDGE_PRESERVE bit
2710 when counting n_branch.
2712 2011-11-26 Uros Bizjak <ubizjak@gmail.com>
2714 * config/i386/sync.md (movdi_via_fpu): Add %Z insn suffixes.
2716 2011-11-26 Joern Rennecke <joern.rennecke@embecosm.com>
2719 * calls.c (mem_overlaps_already_clobbered_arg_p):
2720 Return false if no outgoing arguments have been stored so far.
2722 2011-11-25 Georg-Johann Lay <avr@gjlay.de>
2724 * config/avr/avr.c (print_operand): Support code = 'i' for CONST_INT.
2726 2011-11-24 Andrew MacLeod <amacleod@redhat.com>
2729 * tree.h (is_builtin_name): No longer external.
2730 * builtins.c (is_builtin_name): Make static.
2731 * varasm.c (incorporeal_function_p): __sync and __atomic external calls
2732 are not incorporeal and may need asm label processing.
2734 2011-11-25 Georg-Johann Lay <avr@gjlay.de>
2737 * config/avr/avr-protos.h (avr_log_t): Add field .builtin.
2738 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2739 Don't bypass TARGET_ALL_DEBUG. Print self-info with ?.
2740 (avr_log_vadump): Support %D and %X to print double_int.
2741 (avr_double_int_pop_digit): New static function.
2742 (avr_dump_double_int_hex): New static function.
2744 2011-11-24 Enkovich Ilya <ilya.enkovich@intel.com>
2747 * config/i386/i386.c (distance_non_agu_define_in_bb): Fix insn
2750 2011-11-24 Andrew MacLeod <amacleod@redhat.com>
2752 * optab.c (maybe_emit_atomic_exchange): New. Try to emit an
2753 atomic_exchange pattern.
2754 (maybe_emit_sync_lock_test_and_set): New. Try to emit an exchange
2755 using __sync_lock_test_and_set.
2756 (maybe_emit_compare_and_swap_exchange_loop): New. Try to emit an
2757 exchange using a compare_and_swap loop.
2758 (expand_sync_lock_test_and_set): New. Expand sync_lock_test_and_set.
2759 (expand_atomic_test_and_set): New. Expand test_and_set operation.
2760 (expand_atomic_exchange): Use new maybe_emit_* functions.
2761 (expand_atomic_store): Use new maybe_emit_* functions.
2762 * builtins.c (expand_builtin_sync_lock_test_and_set): Call
2763 expand_sync_lock_test_and_set routine.
2764 (expand_builtin_atomic_exchange): Remove parameter from call.
2765 (expand_builtin_atomic_clear): Use atomic_clear pattern if present.
2766 (expand_builtin_atomic_test_and_set): Add target and simply call
2767 expand_atomic_test_and_set.
2768 (expand_builtin): Add target to expand_builtin_atomic_test_and_set.
2769 * expr.h (expand_atomic_exchange): Add parameter.
2770 (expand_sync_lock_test_and_set): New prototype.
2771 (expand_atomic_test_and_set, expand_atomic_clear): New prototypes.
2773 2011-11-24 H.J. Lu <hongjiu.lu@intel.com>
2776 * config/i386/i386.h (processor_costs): Revert revision 181357.
2777 * config/i386/i386.c (cost models): Likewise.
2778 (core_cost): Likewise.
2779 (promote_duplicated_reg): Likewise.
2780 (promote_duplicated_reg_to_size): Likewise.
2781 (processor_target): Likewise.
2782 (expand_set_or_movmem_via_loop_with_iter): Likewise.
2783 (expand_set_or_movmem_via_loop): Likewise.
2784 (emit_strset): Likewise.
2785 (expand_movmem_epilogue): Likewise.
2786 (expand_setmem_epilogue): Likewise.
2787 (expand_movmem_prologue): Likewise.
2788 (expand_setmem_prologue): Likewise.
2789 (expand_constant_movmem_prologue): Likewise.
2790 (expand_constant_setmem_prologue): Likewise.
2791 (decide_alg): Likewise.
2792 (decide_alignment): Likewise.
2793 (ix86_expand_movmem): Likewise.
2794 (ix86_expand_setmem): Likewise.
2795 (ix86_slow_unaligned_access): Likewise.
2796 * config/i386/i386.md (strset): Likewise.
2797 * config/i386/sse.md (vec_dupv4si): Likewise.
2798 (vec_dupv2di): Likewise.
2800 2011-11-24 Georg-Johann Lay <avr@gjlay.de>
2802 * config/avr/avr.md (*rotlhi2.15): Set length to 4.
2804 2011-11-24 Razya Ladelsky <razya@il.ibm.com>
2806 * tree-data-ref.c (initialize_data_dependence_relation): Update
2807 comment for the self dependence case.
2808 (compute_self_dependence): Remove.
2809 * tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to
2810 compute_self_dependenc.
2812 2011-11-24 Alan Modra <amodra@gmail.com>
2814 * c-decl.c (warn_if_shadowing): Don't warn if shadowed
2815 identifier is from system header.
2817 2011-11-23 Jakub Jelinek <jakub@redhat.com>
2820 * config/i386/i386.c (decide_alg): Initialize *dynamic_check
2823 2011-11-23 Vladimir Makarov <vmakarov@redhat.com>
2825 PR rtl-optimization/48455
2826 * doc/invoke.texi (-fira-region): Document default values.
2828 * flags-types.h (enum ira_region): Add new value
2829 IRA_REGION_AUTODETECT.
2831 * common.opt (fira-region): Set up initial value to
2832 IRA_REGION_AUTODETECT.
2834 * toplev.c (process_options): Set up flag_ira_region depending on
2837 * ira.c (ira.c): Remove optimize guard for ira_build.
2839 2011-11-23 Chung-Lin Tang <cltang@codesourcery.com>
2841 PR rtl-optimization/50496
2842 * jump.c (redirect_jump): Assert fail on nlabel == NULL_RTX
2843 only after epilogue is created. Add comments.
2845 2011-11-22 Richard Henderson <rth@redhat.com>
2847 * config/ia64/ia64.c (ia64_expand_atomic_op): Add model parameter.
2848 Generate the barrier required for the memory model.
2849 (rtx_needs_barrier): Handle UNSPEC_FETCHADD_REL, UNSPEC_CMPXCHG_REL.
2850 * config/ia64/ia64-protos.h: Update.
2851 * config/ia64/ia64.md (UNSPEC_FETCHADD_REL): New.
2852 (UNSPEC_CMPXCHG_REL): New.
2853 * config/ia64/sync.md (mem_thread_fence): New.
2854 (atomic_load<IMODE>, atomic_store<IMODE>): New.
2855 (atomic_compare_and_swap<IMODE>): New.
2856 (cmpxchg_acq_<I124MODE>, cmpxchg_acq_di): New.
2857 (atomic_exchange<IMODE>): New.
2858 (xchg_acq_<IMODE>): Rename from sync_lock_test_and_set<IMODE>.
2859 (atomic_<FETCHOP><IMODE>, atomic_nand<IMODE>): New.
2860 (atomic_fetch_<FETCHOP><IMODE>, atomic_fetch_nand<IMODE>): New.
2861 (atomic_<FETCHOP>_fetch<IMODE>, atomic_nand_fetch<IMODE>): New.
2862 (fetchadd_rel_<I48MODE>): New.
2863 (sync_<FETCHOP><IMODE>, sync_nand<IMODE>): Remove.
2864 (sync_old_<FETCHOP><IMODE>, sync_old_nand<IMODE>): Remove.
2865 (sync_new_<FETCHOP><IMODE>, sync_new_nand<IMODE>): Remove.
2866 (sync_compare_and_swap<IMODE>): Remove.
2867 (sync_lock_release<IMODE>): Remove.
2869 * config/ia64/ia64.md: Use define_c_enum for UNSPEC_*
2870 and UNSPECV_* constants.
2872 2011-11-22 Tom de Vries <tom@codesourcery.com>
2874 PR rtl-optimization/50764
2875 * sched-deps.c (sched_analyze_insn): Make sure frame-related insns are
2876 not moved past preceding jump.
2878 2011-11-22 Jeff Law <law@redhat.com>
2880 * doc/contrib.texi: Add entry for David Binderman.
2882 2011-11-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2884 * postreload.c (reload_combine): Mark reg_state as invalid at
2885 volatile insns if there has been a use already.
2887 2011-11-21 Aldy Hernandez <aldyh@redhat.com>
2889 * opts.c (finish_options): Do not fail for -fgnu-tm.
2890 * gimple-streamer-out.c (output_gimple_stmt): Handle
2892 * gimple-streamer-in.c (input_gimple_stmt): Same.
2893 * lto-cgraph.c (input_overwrite_node): Read tm_clone bit.
2894 (lto_output_node): Write tm_clone bit.
2896 2011-11-22 Ian Lance Taylor <iant@google.com>
2898 * doc/install.texi (Configuration): Correct doc of
2899 --enable-build-poststage1-with-cxx: it is not experimental.
2901 2011-11-22 Jakub Jelinek <jakub@redhat.com>
2903 PR tree-optimization/51074
2904 * fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
2905 handling for BYTES_BIG_ENDIAN.
2906 * optabs.c (can_vec_perm_for_code_p): Likewise.
2908 2011-11-22 Michael Matz <matz@suse.de>
2911 * trans-mem.c (expand_block_tm): Ignore clobbers.
2913 2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
2915 * config/darwin.h (ENDFILE_SPEC): New.
2916 (DARWIN_CRT1_SPEC): Add crttms.o.
2917 (STARTFILE_SPEC): Likewise for dynamic libs and bundles.
2918 * config/i386.h (ENDFILE_SPEC): Amend to include crttme.o.
2920 2011-11-22 Michael Matz <matz@suse.de>
2923 * tree.c (iterative_hash_expr): Remove break after return.
2925 2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
2927 * target.def (tm_clone_table_section): New hook.
2928 * doc/tm.texi.in (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define.
2929 * doc/tm.texi: Regenerate.
2930 * varasm.c (dump_tm_clone_pairs): Use target tm_clone_table_section.
2931 * output.h (default_clone_table_section): New prototype.
2932 * config/darwin.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): New.
2933 * config/darwin-protos.h (darwin_tm_clone_table_section): New prototype.
2934 * config/darwin.c (darwin_tm_clone_table_section): New.
2936 2011-11-21 Torvald Riegel <triegel@redhat.com>
2938 * trans-mem.c (diagnose_tm_1): Print an expression instead of a
2939 declaration in error messages for indirect calls.
2941 2011-11-21 David S. Miller <davem@davemloft.net>
2943 * config/sparc/sparc.c (sparc_regmode_natural_size): New function
2944 implementing REGMODE_NATURAL_SIZE taking into consideration vector
2946 (sparc_modes_tieable_p): Similarly for MODES_TIEABLE_P.
2947 * config/sparc/sparc-protos.h (sparc_regmode_natural_size,
2948 sparc_modes_tieable_p): Declare.
2949 * gcc/config/sparc/sparc.h (REGMODE_NATURAL_SIZE,
2950 MODES_TIEABLE_P): Use new helper functions.
2953 2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2956 * expmed.c (store_bit_field_1): Use extract_bit_field on big
2957 endian targets if the source cannot be exactly covered by word
2960 2011-11-21 Jakub Jelinek <jakub@redhat.com>
2963 * var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP
2964 macro instead of XEXP.
2966 2011-11-21 Andreas Tobler <andreast@fgznet.ch>
2968 * configure: Regenerate.
2970 2011-11-21 Georg-Johann Lay <avr@gjlay.de>
2972 * config/avr/avr.c (output_reload_in_const): Loading a byte with 0
2973 must not affect cc0.
2974 * config/avr/avr.md (*movhi, *movpsi, *movsi, *movsf): Zero to any
2975 register does not change cc0. Same for any constant to ld-register.
2977 2011-11-21 Uros Bizjak <ubizjak@gmail.com>
2979 * config/i386/mmx.md (unspec) <UNSPEC_MOVNTQ, UNSPEC_PFRCP,
2980 UNSPEC_PFRCPIT1, UNSPEC_PFRCPIT2, UNSPEC_PFRSQRT, UNSPEC_PFRSQIT1>:
2981 Move from config/i386/i386.md
2982 (unspecv) <UNSPECV_EMMS, UNSPECV_FEMMS>: Ditto.
2983 * config/i386/sse.md (unspec) <UNSPEC_MOVNT,UNSPEC_MOVU, UNSPEC_LDDQU,
2984 UNSPEC_PSHUFB, UNSPEC_PSIGN, UNSPEC_PALIGNR, UNSPEC_EXTRQI,
2985 UNSPEC_EXTRQ, UNSPEC_INSERTQI, UNSPEC_INSERTQ, UNSPEC_BLENDV,
2986 UNSPEC_INSERTPS, UNSPEC_DP, UNSPEC_MOVNTDQA, UNSPEC_MPSADBW,
2987 UNSPEC_PHMINPOSUW, UNSPEC_PTEST, UNSPEC_PCMPESTR, UNSPEC_PCMPISTR,
2988 UNSPEC_FMADDSUB, UNSPEC_XOP_UNSIGNED_CMP, UNSPEC_XOP_TRUEFALSE,
2989 UNSPEC_XOP_PERMUTE, UNSPEC_FRCZ, UNSPEC_AESENC, UNSPEC_AESENCLAST,
2990 UNSPEC_AESDEC, UNSPEC_AESDECLAST, UNSPEC_AESIMC,
2991 UNSPEC_AESKEYGENASSIST, UNSPEC_PCLMUL, UNSPEC_PCMP, UNSPEC_VPERMIL,
2992 UNSPEC_VPERMIL2, UNSPEC_VPERMIL2F128, UNSPEC_CAST, UNSPEC_VTESTP,
2993 UNSPEC_VCVTPH2PS, UNSPEC_VCVTPS2PH, UNSPEC_VPERMSI, UNSPEC_VPERMDF,
2994 UNSPEC_VPERMSF, UNSPEC_VPERMTI, UNSPEC_GATHER, UNSPEC_VSIBADDR>: Ditto.
2995 (unspecv) <UNSPECV_LDMXCSR, UNSPECV_STMXCSR, UNSPECV_CLFLUSH,
2996 UNSPECV_MONITOR, UNSPECV_MWAIT, UNSPECV_VZEROALL, UNSPECV_VZEROUPPER>:
2998 * config/i386/sync.md (unspec) <UNSPEC_LFENCE, UNSPEC_SFENCE,
2999 UNSPEC_MFENCE, UNSPEC_MOVA>: Ditto.
3000 (unspecv) <UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2, UNSPECV_CMPXCHG_3,
3001 UNSPECV_CMPXCHG_4, UNSPECV_XCHG, UNSPECV_LOCK>: Ditto.
3002 (sse2_lfence): Move from config/i386/sse.md.
3003 (*sse2_lfence): Ditto.
3004 (sse_sfence): Ditto.
3005 (*sse_sfence): Ditto.
3006 (sse2_mfence): Ditto.
3007 (mfence_sse2): Ditto. Rename from *sse2_mfence. Enable also
3009 (mem_thread_fence): Use mfence_sse2.
3011 2011-11-21 Georg-Johann Lay <avr@gjlay.de>
3013 * config/avr/avr.h (struct base_arch_s): Add field sfr_offset.
3014 * config/avr/avr-devices.c: Ditto. And initialize it.
3015 * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define
3017 * config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove.
3018 (out_movhi_r_mr, out_movhi_mr_r): Remove.
3019 (out_movsi_r_mr, out_movsi_mr_r): Remove.
3020 * config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20.
3021 (*insv.io, *insv.not.io): Ditto.
3022 * config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static.
3023 (print_operand): Implement "%i" to print address as I/O address.
3024 (output_movqi): Clean up call of out_movqi_mr_r.
3025 (output_movhi): Clean up call of out_movhi_mr_r.
3026 (avr_file_start): Use avr_current_arch->sfr_offset instead of
3027 magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1.
3028 (avr_out_sbxx_branch): Use %i instead of %m-0x20.
3029 (out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static.
3030 (out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len.
3031 (out_shift_with_cnt): Clean up code: Use avr_asm_len.
3032 (output_movsisf): Use output_reload_insisf for all CONSTANT_P sources.
3033 (avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources.
3034 Clean up call of avr_out_store_psi.
3035 (output_reload_in_const): Don't cut symbols longer than 2 bytes.
3036 (output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to
3037 try if setting pre-cleared register is advantageous.
3038 (avr_out_plus_1): Use gen_int_mode instead of GEN_INT.
3040 2011-11-20 Joey Ye <joey.ye@arm.com>
3042 * expr.c (expand_expr_real_1): Correctly handle strict volatile
3043 bitfield loads smaller than mode size.
3045 2011-11-20 Richard Henderson <rth@redhat.com>
3047 * config/mips/mips.c (mips_init_libfuncs): Call init_sync_libfuncs.
3049 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
3052 * config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
3053 patterns for supported mode only.
3056 * config/i386/i386.c (ix86_expand_builtin)
3057 <IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.
3059 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
3061 * config/i386/i386.md (UNSPEC_MOVNTI): Remove.
3062 (UNSPEC_MOVNTQ): New unspec.
3063 * config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
3064 Use UNSPEC_MOVNTQ instead of UNSPEC_MOVNT.
3065 * config/i386/sse.md (sse2_movnti<mode>): Use UNSPEC_MOVNT instead of
3067 (STORENT_MODE): Add DI and V4DI modes.
3069 2011-11-20 Nathan Sidwell <nathan@acm.org>
3071 PR gcov-profile/51113
3072 * coverage.c (build_var): Propagate visibility for public
3073 decls. Use make_decl_one_only for PIC correctness.
3076 * gcc.misc-tests/gcov-13.c: Check gcovpart-13b coverage
3077 * gcc.misc-tests/gcov-16.c: New.
3078 * gcc.misc-tests/gcov-17.c: New.
3079 * g++.dg/gcov/gcov-8.C: New.
3080 * g++.dg/gcov/gcov-9.C: New.
3081 * g++.dg/gcov/gcov-10.C: New.
3083 2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
3085 PR rtl-optimization/51187
3086 * reorg.c (relax_delay_slots): Do not consider a jump useless if there
3087 is a barrier between the jump and its target label.
3089 2011-11-19 Patrick Marlier <patrick.marlier@gmail.com>
3092 * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.
3094 2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
3096 * expmed.c (store_bit_field_1): Revert bogus formatting change.
3098 2011-11-19 Richard Earnshaw <rearnsha@arm.com>
3101 * config/arm/arm.c (neon_disambiguate_copy): Correctly handle partial
3102 overlap of src and dest operands.
3104 2011-11-19 Iain Sandoe <iains@gcc.gnu.org>
3106 * config/darwin.h (ASM_DEBUG_SPEC): New.
3107 * config/darwin9.h (ASM_DEBUG_SPEC): New.
3109 2011-11-18 Jan Hubicka <jh@suse.cz>
3111 * config/i386/i386.c (atom_cost): Disable SSE loop until alignment
3114 2011-11-18 Anatoly Sokolov <aesok@post.ru>
3116 * config/cris/cris.c (cris_function_value_regno_p): Make static.
3117 (TARGET_FUNCTION_VALUE_REGNO_P): Define.
3118 * config/cris/cris.h (FUNCTION_VALUE_REGNO_P): Remove.
3119 * config/cris/cris-protos.h (cris_function_value_regno_p): Remove.
3121 2011-11-18 H.J. Lu <hongjiu.lu@intel.com>
3124 * doc/extend.texi: Document __builtin_ia32_movnti64.
3126 * config/i386/emmintrin.h (_mm_stream_si64): New.
3128 * config/i386/i386-builtin-types.def: Add VOID_FTYPE_PLONGLONG_LONGLONG.
3130 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTI64.
3131 (bdesc_special_args): Update __builtin_ia32_movnti. Add
3132 __builtin_ia32_movnti64.
3133 (ix86_expand_special_args_builtin): Handle
3134 VOID_FTYPE_PLONGLONG_LONGLONG.
3136 * config/i386/i386.md (UNSPEC_MOVNTI): New.
3138 * config/i386/sse.md (sse2_movntsi): Renamed to ...
3139 (sse2_movnti<mode>): This.
3141 2011-11-18 Georg-Johann Lay <avr@gjlay.de>
3144 * config/avr/avr.h (base_arch_s): Add field n_segments.
3145 (ADDR_SPACE_PGM1, ADDR_SPACE_PGM2, ADDR_SPACE_PGM3,
3146 ADDR_SPACE_PGM4, ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): New address spaces.
3147 (AVR_HAVE_ELPM, AVR_HAVE_ELPMX): New defines.
3148 (INIT_EXPANDERS): New define.
3149 * config/avr/avr-protos.h (avr_mem_pgmx_p): New.
3150 (avr_init_expanders): New.
3151 (avr_emit_movmemhi, avr_out_movmem): New.
3152 (avr_xload_libgcc_p): New.
3153 * config/avr/avr-c.c (avr_register_target_pragmas): Register
3154 address spaces __pgm1, __pgm2, __pgm3, __pgm4 __pgm5, __pgmx.
3155 (avr_cpu_cpp_builtins): Add built-in defines __PGM1,
3156 __PGM2, __PGM3, __PGM4, __PGM5, __PGMX.
3157 * config/avr/avr-devices.c (avr_arch_types): Set field n_segments.
3159 * config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
3160 3 bits instead of just 1.
3161 (xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
3162 (progmem_section): Change from section to array of sections.
3163 (progmem_section_prefix): New static variable.
3164 (avr_file_start): Print set for __RAMPZ__
3165 (avr_option_override): Move initialization of RTXes from here...
3166 (avr_init_expanders): ...to this new function.
3167 (avr_pgm_segment): New static function.
3168 (avr_decl_pgm_p): Handle error_mark_node.
3169 (avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
3170 (avr_out_xload, avr_find_unused_d_reg): New static functions.
3171 (expand_prologue, expand_epilogue): Use rampz_rtx.
3172 (print_operand): Hande CONST_STRING.
3173 (avr_xload_libgcc_p): New static function.
3174 (avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
3175 (avr_progmem_p): Return 2 for 24-bit flash address space.
3176 (avr_out_sbxx_branch): Clean-up code from ASn macros.
3177 (out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
3178 address and print symbolically.
3179 (avr_asm_named_section, avr_section_type_flags,
3180 avr_encode_section_info, avr_asm_select_section,
3181 avr_addr_space_address_mode, avr_addr_space_pointer_mode,
3182 avr_addr_space_legitimate_address_p, avr_addr_space_convert,
3183 avr_addr_space_legitimize_address): Handle new address spaces.
3184 (avr_output_progmem_section_asm_op): New static function.
3185 (avr_asm_init_sections): Initialize progmem_section[].
3186 (adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
3187 (avr_const_address_lo16): New static function.
3188 (avr_assemble_integer): Use it to handle 3-byte integers.
3189 (avr_emit_movmemhi, avr_out_movmem): New functions.
3191 * config/avr/predicates.md (nox_general_operand): Handle new
3193 * config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
3194 (adjust_len): Add xload, movmem.
3195 (SP_ADDR): New define_constants.
3196 (isa): Add "lpm", "lpmx", "elpm", "elpmx".
3197 (enabled): Handle them.
3198 (load<mode>_libgcc): New expander.
3199 (*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
3200 (xload8_A, xload<mode>_A): New insn-and-splits.
3201 (xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
3202 (mov<mode>): Handle new address spaces.
3203 (movmemhi): Rewrite using avr_emit_movmemhi.
3204 (MOVMEM_r_d): New mode attribute.
3205 (movmem_<mode>, movmem_qi_elpm): New insns.
3206 (setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
3207 C-code. Use label instead of hard-coded instrunction lengths.
3209 2011-11-18 Martin Jambor <mjambor@suse.cz>
3211 PR tree-optimization/50605
3212 * gimple.c (is_gimple_ip_invariant_address): Also handle MEM_REFs
3213 of IPA invariant decls.
3215 2011-11-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
3217 * tree-outof-ssa.c (insert_back_edge_copies): Add call to
3218 mark_dfs_back_edges.
3220 2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
3223 * configure.ac: Remove ranlib special-casing for Darwin.
3224 * configure: Regenerate.
3226 2011-11-18 Uros Bizjak <ubizjak@gmail.com>
3228 PR tree-optimization/51118
3229 * fold-const.c (fold_checksum_tree): Check for TS_TYPED structure
3230 before using TREE_TYPE accessor on expr.
3232 2011-11-17 Jan Hubicka <jh@suse.cz>
3235 * i386.c (atom_cost): Fix 32bit memset description.
3236 (expand_set_or_movmem_via_loop_with_iter): Output proper bounds check
3238 (expand_movmem_epilogue): Handle epilogues up to size 15 w/o producing
3240 (decide_alg): sse_loop is not useable wthen SSE2 is disabled;
3241 when not optimizing always use rep movsb or lincall; do not produce
3242 word sized loops when optimizing memset for size (to avoid need
3243 for large constants).
3244 (ix86_expand_movmem): Get into sync with ix86_expand_setmem;
3245 choose unroll factors better; always do 128bit moves when producing
3246 SSE loops; do not produce loopy epilogue when size is too small.
3247 (promote_duplicated_reg_to_size): Do not look into desired alignments
3248 when doing vector expansion.
3249 (ix86_expand_setmem): Track better when promoted value is available;
3250 choose unroll factors more sanely. Output loopy epilogue only
3253 2011-11-17 Steve Ellcey <sje@cup.hp.com>
3256 * output.h (fprint_w): Remove.
3257 * final.c (fprint_w): Remove.
3258 (output_addr_const): Change fprint_w back to fprintf.
3260 2011-11-17 Andrew Pinski <apinski@cavium.com>
3262 * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for MIPS.
3264 2011-11-17 Andrew MacLeod <amacleod@redhat.com>
3266 * builtins.c (expand_builtin): Remove 4th parameter representing
3267 weak/strong mode when __atomic_compare_exchange becomes a library call.
3269 2011-11-17 Richard Henderson <rth@redhat.com>
3271 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
3272 new pseudo for target after convert_modes.
3273 (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
3275 2011-11-17 Richard Henderson <rth@redhat.com>
3277 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
3278 new pseudo for target after convert_modes.
3279 (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
3281 2011-11-17 Richard Henderson <rth@redhat.com>
3283 * builtins.c (expand_builtin_mem_thread_fence): Remove.
3284 (expand_builtin_mem_signal_fence): Remove.
3285 (expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.
3286 (expand_builtin_sync_synchronize): Likewise.
3287 (expand_builtin_atomic_signal_fence): Use expand_mem_signal_fence.
3288 * optabs.c (expand_asm_memory_barrier): Split out from
3289 expand_builtin_mem_signal_fence.
3290 (expand_mem_thread_fence): New, a combination of code from
3291 expand_builtin_mem_thread_fence and expand_builtin_sync_synchronize.
3292 (expand_mem_signal_fence): Moved and renamed from
3293 expand_builtin_mem_signal_fence.
3294 (expand_atomic_exchange): Use expand_mem_thread_fence.
3295 (expand_atomic_load, expand_atomic_store): Likewise.
3296 * expr.h, optabs.h: Update decls.
3298 2011-11-17 Bin Cheng <bin.cheng@arm.com>
3300 PR rtl-optimization/50663
3301 * cprop.c (implicit_set_indexes): New global variable.
3302 (insert_set_in_table): Add additional parameter and record implicit
3304 (hash_scan_set): Add additional parameter and pass it to above.
3305 (hash_scan_insn): Pass false to hash_scan_set.
3306 (compute_hash_table_work): Pass true to hash_scan_set.
3307 (compute_cprop_data): Add implicit set to AVIN of block which the
3308 implicit set is recorded for.
3309 (one_cprop_pass): Handle implicit_set_indexes array.
3311 2011-11-17 Michael Matz <matz@suse.de>
3315 * tree-ssa-live.c (mark_all_vars_used_1): Recurse only for decls of
3317 (remove_unused_locals): Ditto.
3319 2011-11-16 Richard Henderson <rth@redhat.com>
3321 * config/alpha/alpha.c (alpha_split_compare_and_swap_12): Copy
3322 ALIAS_SET_MEMORY_BARRIER when creating a new memory.
3323 (alpha_split_atomic_exchange_12): Likewise.
3324 * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Likewise.
3326 2011-11-16 Joseph Myers <joseph@codesourcery.com>
3328 * config/i386/i386elf.h (PREFERRED_DEBUGGING_TYPE): Remove.
3330 2011-11-16 David Edelsohn <dje.gcc@gmail.com>
3332 * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags):
3333 Default to minimum alignment if decl is NULL.
3335 2011-11-16 Uros Bizjak <ubizjak@gmail.com>
3337 * config/i386/sse.md (round<mode>2_vec_pack_sfix): Optimize V2DFmode
3339 (<sse4_1>_round<ssemodesuffix>_vec_pack_sfix<avxsizesuffix>): Ditto.
3341 2011-11-16 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
3343 * doc/invoke.texi: Document AMD bdver1 and btver1.
3345 2011-11-16 Richard Earnshaw <rearnsha@arm.com>
3346 Bernd Schmidt <bernds@coudesourcery.com>
3347 Sebastian Huber <sebastian.huber@embedded-brains.de>
3350 * config/arm/arm.c (store_multiple_sequence): Avoid cases where
3351 the base reg is stored iff compiling for Thumb1.
3353 2011-11-16 Razya Ladelsky <razya@il.ibm.com>
3355 PR tree-optimization/49960
3356 * tree-data-ref.c (initialize_data_dependence_relation): Add
3358 Remove call to compute_self_dependence.
3359 (compute_affine_dependence): Remove the !DDR_SELF_REFERENCE condition.
3360 (compute_self_dependence): Remove old code. Add call to
3361 compute_affine_dependence.
3362 (compute_all_dependences): Remove call to compute_self_dependence.
3363 Add call to compute_affine_dependence.
3365 2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3368 * expmed.c (store_bit_field_1): Use extract_bit_field on big
3369 endian targets if the source cannot be exactly covered by word
3372 2011-11-15 Joseph Myers <joseph@codesourcery.com>
3374 * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Change STRING_LIMIT to
3377 2011-11-15 Richard Henderson <rth@redhat.com>
3379 * config/alpha/alpha.c (alpha_pre_atomic_barrier): New.
3380 (alpha_post_atomic_barrier): New.
3381 (alpha_split_atomic_op): New memmodel argument; honor it.
3382 (alpha_split_compare_and_swap): Take array of operands. Honor
3383 memmodel; always set bool output
3384 (alpha_expand_compare_and_swap_12): Similarly.
3385 (alpha_split_compare_and_swap_12): Similarly.
3386 (alpha_split_atomic_exchange): Similarly. Rename from
3387 alpha_split_lock_test_and_set.
3388 (alpha_expand_atomic_exchange_12): Similarly. Rename from
3389 alpha_expand_lock_test_and_set_12.
3390 (alpha_split_atomic_exchange_12): Similarly. Rename from
3391 alpha_split_lock_test_and_set_12.
3392 * config/alpha/alpha-protos.h: Update.
3393 * config/alpha/alpha.md (UNSPECV_CMPXCHG): New.
3394 * config/alpha/constraints.md ("w"): New.
3395 * config/alpha/predicates.md (mem_noofs_operand): New.
3396 * config/alpha/sync.md (atomic_compare_and_swap<mode>): Rename from
3397 sync_compare_and_swap<mode>; add the new parameters.
3398 (atomic_exchange<mode>): Update from sync_test_and_set<mode>.
3399 (atomic_fetch_<op><mode>): Update from sync_old_<op><mode>.
3400 (atomic_<op>_fetch<mode>): Update from sync_new_<op><mode>.
3401 (atomic_<op><mode>): Update from sync_<op><mode>.
3403 2011-11-16 Tom de Vries <tom@codesourcery.com>
3405 * tree-ssa-tail-merge.c (replace_block_by): Add frequency of bb2 to bb1.
3407 2011-11-16 Alan Modra <amodra@gmail.com>
3409 PR rtl-optimization/51051
3411 * function.c (thread_prologue_and_epilogue_insns): Guard
3412 emitting return with single_succ_p test.
3414 2011-11-15 Joern Rennecke <joern.rennecke@embecosm.com>
3416 * config/epiphany/epiphany.md (mov<mode>cc): Fix code to
3417 get mode from CMP_OP1 if CMP_OP0 is VOIDmode.
3419 2011-11-15 Uros Bizjak <ubizjak@gmail.com>
3421 * config/i386/sse.md (vec_pack_trunc_v2df): Optimize sequence for AVX.
3422 (vec_pack_sfix_trunc_v2df): Ditto.
3423 (vec_pack_sfix_v2df): Ditto.
3424 (vec_pack_sfix_trunc_v4df): Generate fix_truncv4dfv4si2 and
3425 avx_vec_concatv8si patterns.
3426 (vec_pack_sfix_v4df): Generate avx_cvtpd2dq256 and
3427 avx_vec_concatv8si patterns.
3429 2011-11-15 Torvald Riegel <triegel@redhat.com>
3431 * c-parser.c (c_parser_transaction_expression): Require parentheses
3432 when parsing transaction expressions.
3434 2011-11-15 Tristan Gingold <gingold@adacore.com>
3436 * incpath.c (get_added_cpp_dirs): New function.
3437 * incpath.h (get_added_cpp_dirs): Declare.
3438 * config/vms/vms-c.c (vms_c_register_includes): New function.
3439 (vms_std_modules): New variable.
3440 * config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define.
3441 (vms_c_register_includes): Declare.
3443 2011-11-15 Tristan Gingold <gingold@adacore.com>
3445 * c-family/c-pragma.h (pragma_extern_prefix): Declare.
3446 * c-family/c-pragma.c (pragma_extern_prefix): Make it public.
3447 * config/vms/vms-c.c (saved_extern_prefix): New variable.
3448 (vms_pragma_extern_prefix): New function.
3449 (vms_c_register_pragma): Register vms_pragma_extern_prefix.
3451 2011-11-15 Georg-Johann Lay <avr@gjlay.de>
3454 * config/avr/avr.h (ADDR_SPACE_PGM): New address spaces.
3455 (REGISTER_TARGET_PRAGMAS): New define.
3456 * config/avr/avr-protos.h (avr_mem_pgm_p): New.
3457 (avr_load_libgcc_p): New.
3458 (avr_register_target_pragmas): New.
3459 (asm_output_external_libcall): Remove.
3460 (avr_log_t): Add field "progmem". Order alphabetically.
3461 * config/avr/avr-log.c (avr_log_set_avr_log): Set avr_log.progmem.
3462 * config/avr/avr-c.c (langhooks.h): New include.
3463 (avr_register_target_pragmas): Ne