1 2012-01-03 Olivier Hainque <hainque@adacore.com>
3 * collect2.c (main): In AIX specific computations for vector
4 insertions, use CONST_CAST2 to cast from char ** to const char **.
6 2012-01-03 Richard Guenther <rguenther@suse.de>
9 * dwarf2out.c (dwarf2out_finish): Always create a DIE for
10 the context of a limbo DIE when it does not already exist.
12 2012-01-03 Jakub Jelinek <jakub@redhat.com>
14 PR tree-optimization/51719
15 * value-prof.c (gimple_ic): When indirect call isn't noreturn,
16 but direct call is, clear direct call's lhs and don't add fallthrough
17 edge from dcall_bb to join_bb and PHIs.
19 2012-01-03 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
21 * config/s390/s390.md ("*cmp<mode>_ccs"): Fix comment mentioning
22 the instructions emitted by the pattern.
23 ("*TDC_insn_<mode>"): Add comment.
25 2012-01-03 Richard Guenther <rguenther@suse.de>
28 * fold-const.c (fold_comparison): Properly canonicalize
29 tree offset and HOST_WIDE_INT bit position.
31 2012-01-02 Uros Bizjak <ubizjak@gmail.com>
33 * config/ia64/ia64.c (expand_vec_perm_broadcast): Use correct
34 operands for extzv pattern.
36 2012-01-02 Jakub Jelinek <jakub@redhat.com>
39 * cselib.c (add_mem_for_addr): Call canonical_cselib_val
42 2012-01-02 Sandra Loosemore <sandra@codesourcery.com>
44 * doc/invoke.texi (-flto and related options): Copy-edit.
46 2012-01-02 Richard Sandiford <rdsandiford@googlemail.com>
48 * config/mips/mips.md (loadgp_newabi_<mode>): Add missing earlyclobber.
50 2012-01-02 Jakub Jelinek <jakub@redhat.com>
52 * config/i386/sse.md (*avx2_gatherdi<mode>_3, *avx2_gatherdi<mode>_4):
55 2012-01-02 Richard Sandiford <rdsandiford@googlemail.com>
57 * expr.h (move_by_pieces_ninsns): Declare.
58 * expr.c (move_by_pieces_ninsns): Make external.
59 * config/mips/mips-protos.h (mips_move_by_pieces_p): Declare.
60 (mips_store_by_pieces_p): Likewise.
61 * config/mips/mips.h (MOVE_BY_PIECES_P): Call mips_move_by_pieces_p.
62 (STORE_BY_PIECES_P): Likewise mips_store_by_pieces_p.
63 * config/mips/mips.c (mips_move_by_pieces_p): New function.
64 (mips_store_by_pieces_p): Likewise.
66 2012-01-02 Jakub Jelinek <jakub@redhat.com>
68 * passes.c (register_one_dump_file): Free full_name.
70 * reload1.c (reload): Don't allocate reg_max_ref_width here.
71 (calculate_elim_costs_all_insns): Free offsets_at and
72 offsets_known_at at the end and clear the pointers.
74 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
76 * config/avr/avr.opt (-mbranch-cost): Fix double definition of
77 this option introduced in r180739.
79 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
82 * config.gcc (tm_file target=avr]): Add avr/avr-multilib.h
83 (tmake_file target=avr): Add avr/t-multilib.
85 * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use AVR_HAVE_8BIT_SP
86 to built-in define __AVR_HAVE_8BIT_SP__, __AVR_HAVE_16BIT_SP__.
87 * config/avr/genmultilib.awk: New file.
88 * config/avr/t-multilib: New auto-generated file.
89 * config/avr/multilib.h: New auto-generated file.
90 * config/avr/t-avr (AVR_MCUS): New variable.
92 (s-mlib): Depend on t-multilib.
93 (t-multilib, multilib.h): New dependencies.
94 (s-avr-mlib): New rule to build t-multilib, multilib.h from AVR_MCUS.
95 (MULTILIB_OPTIONS): Remove.
96 (MULTILIB_MATCHES): Remove.
97 (MULTILIB_DIRNAMES): Remove.
98 (MULTILIB_EXCEPTIONS): Remove:
99 * config/avr/genopt.sh: Don't use hard coded file name;
100 pass AVR_MCUS from t-avr instead.
102 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
104 * config/avr/avr.c (avr_out_ashrpsi3): Fix "case 31" to "case 23".
106 2012-01-02 Georg-Johann Lay <avr@gjlay.de>
108 Implement light-weight DImode support.
109 * config/avr/avr-dimode.md: New file.
110 * config/avr/avr.md: Include it.
111 (adjust_len): Add plus64, compare64.
112 (HIDI): Remove code iterator.
113 (code_stdname): New code attribute.
114 (rotx, rotsmode): Remove DI.
115 (rotl<mode>3, *rotw<mode>, *rotb<mode>): Use HISI instead of HIDI
117 * config/avr/avr-protos.h (avr_have_dimode): New.
118 (avr_out_plus64, avr_out_compare64): New.
119 * config/avr/avr.c (avr_out_compare): Handle DImode.
120 (avr_have_dimode): New variable definition and initialization.
121 (avr_out_compare64, avr_out_plus64): New functions.
122 (avr_out_plus_1): Use simplify_unary_operation to negate xval.
123 (adjust_insn_length): Handle ADJUST_LEN_COMPARE64, ADJUST_LEN_PLUS64.
124 (avr_compare_pattern): Skip DImode comparisons.
126 2012-01-02 Revital Eres <revital.eres@linaro.org>
128 * ddg.c (def_has_ccmode_p): New function.
129 (add_cross_iteration_register_deps,
130 create_ddg_dep_from_intra_loop_link): Call it.
132 2012-01-02 Richard Guenther <rguenther@suse.de>
135 * invoke.texi (fassociative-math): Remove spurious paranthesis.
137 2012-01-01 Jakub Jelinek <jakub@redhat.com>
139 * gcc.c (process_command): Update copyright notice dates.
140 * gcov.c (print_version): Likewise.
141 * gcov-dump.c (print_version): Likewise.
142 * mips-tfile.c (main): Likewise.
143 * mips-tdump.c (main): Likewise.
145 2012-01-01 Ira Rosen <irar@il.ibm.com>
147 PR tree-optimization/51704
148 * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Check that
149 a use is inside the basic block or loop before accessing its vect info.
151 2012-01-01 Jan Hubicka <jhjh@suse.cz>
153 PR rtl-optimization/51069
154 * cfgloopmanip.c (remove_path): Removing path making irreducible
155 region unconditional makes BB part of the region.
157 2012-01-01 Jakub Jelinek <jakub@redhat.com>
159 PR tree-optimization/51683
160 * tree-ssa-propagate.c (substitute_and_fold): Don't optimize away
161 calls with side-effects.
162 * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
164 2011-12-31 Alexandre Oliva <aoliva@redhat.com>
166 * cselib.h (cselib_add_permanent_equiv): Declare.
167 (canonical_cselib_val): New.
168 * cselib.c (new_elt_loc_list): Rework to support value
169 equivalences. Adjust all callers.
170 (preserve_only_constants): Retain value equivalences.
171 (references_value_p): Retain preserved values.
172 (rtx_equal_for_cselib_1): Handle value equivalences.
173 (cselib_invalidate_regno): Use canonical value.
174 (cselib_add_permanent_equiv): New.
175 * alias.c (find_base_term): Reset locs lists while recursing.
176 * var-tracking.c (val_bind): New. Don't add equivalences
177 present in cselib table, compared with code moved from...
178 (val_store): ... here.
179 (val_resolve): Use val_bind.
180 (VAL_EXPR_HAS_REVERSE): Drop.
181 (add_uses): Do not create MOps for addresses. Do not mark
182 non-REG non-MEM expressions as requiring resolution.
183 (reverse_op): Record reverse as a cselib equivalence.
184 (add_stores): Use it. Do not create MOps for addresses.
185 Do not require resolution for non-REG non-MEM expressions.
186 Simplify support for reverse operations.
187 (compute_bb_dataflow): Drop reverse support.
188 (emit_notes_in_bb): Likewise.
189 (create_entry_value): Rename to...
190 (record_entry_value): ... this. Use cselib equivalences.
191 (vt_add_function_parameter): Adjust.
193 2011-12-30 Michael Meissner <meissner@linux.vnet.ibm.com>
195 * config/rs6000/rs6000.c (rs6000_inner_target_options): Fix thinko
196 in setting options via target #pragma or attribute.
198 2011-12-30 Anatoly Sokolov <aesok@post.ru>
200 * config/bfin/bfin.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
201 * config/bfin/bfin-protos.h (bfin_register_move_cost,
202 bfin_memory_move_cost): Remove.
203 * config/bfin/bfin.c (bfin_register_move_cost,
204 bfin_memory_move_cost): Make static. Change arguments type from
205 enum reg_class to reg_class_t and from int to bool.
206 (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
208 2011-12-30 Nathan Sidwell <nathan@acm.org>
210 * gcov.c (total_lines, total_executed): New global vars.
211 (generate_results): Call executed_summary.
212 (executed_summary): New function, broken out of ...
213 (function_summary): ... here. Call it.
214 * coverage.c (coverage_finish): Also check for local_tick == -1.
215 * gcov-dump (tag_function): Correct labelling typo.
217 2011-12-29 Michael Meissner <meissner@linux.vnet.ibm.com>
220 * config/rs6000/rs6000.c (rs6000_assemble_integer): Delete check
221 for an initialized pointer being in a text section with
222 -mrelocatable, since it should never happen.
224 2011-12-29 Michael Eager <eager@eagercon.com>
226 * config/microblaze/microblaze.md: Add expander for simple_return,
227 return, add return_internal and simple_return_internal insns.
229 2011-12-29 Oleg Endo <olegendo@gcc.gnu.org>
231 * config/sh/sh.h (BRANCH_COST): Use sh_branch_cost variable.
232 * config/sh/sh.c (sh_option_override): Simplify sh_branch_cost
235 2011-12-28 Ian Lance Taylor <iant@google.com>
237 * dwarf2out.c (gen_compile_unit_die): Use DW_LANG_Go for Go.
239 2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
242 * config/rs6000/rs6000.c (rs6000_assemble_integer): Don't call
243 unlikely_text_section_p. Instead check for being in a code section.
245 2011-12-28 Ira Rosen <irar@il.ibm.com>
247 PR tree-optimization/51684
248 * tree-vect-slp.c (vect_schedule_slp_instance): Get gsi of original
249 statement in case of a pattern.
250 (vect_schedule_slp): Likewise.
252 2011-12-27 Eric Botcazou <ebotcazou@adacore.com>
254 PR rtl-optimization/51667
255 * ree.c (insn_merge_code): Delete.
256 (is_insn_merge_attempted): Likewise.
257 (get_insn_status): Likewise.
258 (set_insn_status): Likewise.
259 (struct ext_cand): Add CODE and MODE fields.
260 (combine_set_extend): Rename to...
261 (combine_set_extension): ...this. Use above fields and tidy up.
262 (transform_ifelse): Likewise.
263 (get_defs): Return the chain of definitions.
264 (is_this_a_cmove): Merge into...
265 (is_cond_copy_insn): ...this. Return bool.
266 (make_defs_and_copies_lists): Adjust calls to get_defs and simplify.
267 (merge_def_and_ext): Adjust call to combine_set_extend.
268 (combine_reaching_defs): Remove calls to {g|s}et_insn_status.
269 (struct extend_info): Rename to...
270 (struct re_info): ...this. Add DEF_MAP field.
271 (add_ext_candidate): Merge into...
272 (add_removable_extension): ...this. Adjust calls to get_defs. Ensure
273 reaching definitions are associated with only one kind of extension.
274 (find_removable_extensions): Create and destroy the definition map.
275 (find_and_remove_re): Return void. Change 'long' variables to 'int'.
276 Do not deal with is_insn_merge_attempted.
278 2011-12-25 Jan Hubicka <jh@suse.cz>
281 * tree-ssa-threadupdate.c (redirect_edges): Watch for overflow.
283 2011-12-26 Oleg Endo <oleg.endo@t-online.de>
285 * config/sh/sync.md: Add soft atomics ABI description.
286 (fetchop_name): Use 'or' instead of 'ior'.
287 (fetchop_insn): Remove.
288 (atomic_compare_and_swap<mode>_soft):
289 Don't insert aligning nop after the write-back instruction. Fix
290 multi-line asm output formatting style.
291 (atomic_fetch_<fetchop_name><mode>_soft): Likewise.
292 (atomic_fetch_nand<mode>_soft): Likewise.
293 (atomic_<fetchop_name>_fetch<mode>_soft): Likewise.
294 (atomic_nand_fetch<mode>_soft): Likewise.
296 2011-12-23 Richard Henderson <rth@redhat.com>
298 * tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR): Remove.
299 * cfgexpand.c (expand_debug_expr): Don't handle them.
300 * expr.c (expand_expr_real_2): Likewise.
301 * fold-const.c (fold_binary_loc): Likewise.
302 * gimple-pretty-print.c (dump_binary_rhs): Likewise.
303 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
304 * tree-inline.c (estimate_operator_cost): Likewise.
305 * tree-pretty-print.c (dump_generic_node): Likewise.
306 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
307 * optabs.c (optab_for_tree_code): Likewise.
308 (can_vec_perm_for_code_p): Remove.
309 (expand_binop): Don't try it.
310 (init_optabs): Don't init vec_extract_even/odd_optab.
311 * genopinit.c (optabs): Likewise.
312 * optabs.h (OTI_vec_extract_even, OTI_vec_extract_odd): Remove.
313 (vec_extract_even_optab, vec_extract_odd_optab): Remove.
314 * tree-vect-data-refs.c (vect_strided_store_supported): Tidy code.
315 (vect_permute_store_chain): Use TYPE_VECTOR_SUBPARTS instead of
316 GET_MODE_NUNITS; check vect_gen_perm_mask return value instead of
317 asserting vect_strided_store_supported.
318 (vect_strided_load_supported): Use can_vec_perm_p.
319 (vect_permute_load_chain): Use VEC_PERM_EXPR.
321 * doc/generic.texi (VEC_EXTRACT_EVEN_EXPR): Remove.
322 (VEC_EXTRACT_ODD_EXPR): Remove.
323 * doc/md.texi (vec_extract_even, vec_extract_odd): Remove.
325 2011-12-23 Anatoly Sokolov <aesok@post.ru>
327 * config/score/score.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
328 * config/score/score-protos.h (score_register_move_cost): Remove.
329 * config/score/score.c (TARGET_REGISTER_MOVE_COST): Define.
330 (score_register_move_cost): Make static. Change arguments type from
331 enum reg_class to reg_class_t.
333 2011-12-23 Jakub Jelinek <jakub@redhat.com>
334 Richard Henderson <rth@redhat.com>
336 * tree.def (VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): Remove.
337 * gimple-pretty-print.c (dump_binary_rhs): Don't handle
338 VEC_INTERLEAVE_HIGH_EXPR and VEC_INTERLEAVE_LOW_EXPR.
339 * expr.c (expand_expr_real_2): Likewise.
340 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
341 * cfgexpand.c (expand_debug_expr): Likewise.
342 * tree-inline.c (estimate_operator_cost): Likewise.
343 * tree-pretty-print.c (dump_generic_node): Likewise.
344 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
345 * fold-const.c (fold_binary_loc): Likewise.
346 * doc/generic.texi (VEC_INTERLEAVE_HIGH_EXPR,
347 VEC_INTERLEAVE_LOW_EXPR): Remove documentation.
348 * optabs.c (optab_for_tree_code): Don't handle
349 VEC_INTERLEAVE_HIGH_EXPR and VEC_INTERLEAVE_LOW_EXPR.
350 (expand_binop, init_optabs): Remove vec_interleave_high_optab
351 and vec_interleave_low_optab.
352 * genopinit.c (optabs): Likewise.
353 * optabs.h (OTI_vec_interleave_high, OTI_vec_interleave_low): Remove.
354 (vec_interleave_high_optab, vec_interleave_low_optab): Remove.
355 * doc/md.texi (vec_interleave_high, vec_interleave_low): Remove
357 * tree-vect-stmts.c (gen_perm_mask): Renamed to...
358 (vect_gen_perm_mask): ... this. No longer static.
359 (perm_mask_for_reverse, vectorizable_load): Adjust callers.
360 * tree-vectorizer.h (vect_gen_perm_mask): New prototype.
361 * tree-vect-data-refs.c (vect_strided_store_supported): Don't try
362 VEC_INTERLEAVE_*_EXPR, use can_vec_perm_p instead of
363 can_vec_perm_for_code_p.
364 (vect_permute_store_chain): Generate VEC_PERM_EXPR with interleaving
365 masks instead of VEC_INTERLEAVE_HIGH_EXPR and VEC_INTERLEAVE_LOW_EXPR.
366 * config/i386/i386.c (expand_vec_perm_interleave2): If
367 expand_vec_perm_interleave3 would handle it, return false.
368 (expand_vec_perm_broadcast_1): Don't use vec_interleave_*_optab.
370 2011-12-23 Richard Henderson <rth@redhat.com>
372 * config/mips/loongson.md (UNSPEC_LOONGSON_PINSR_0,
373 UNSPEC_LOONGSON_PINSR_1, UNSPEC_LOONGSON_PINSR_2,
374 UNSPEC_LOONGSON_PINSR_3): Replace with...
375 (UNSPEC_LOONGSON_PINSRH): ... this.
376 (UNSPEC_LOONGSON_VINIT): New.
377 (UNSPEC_LOONGSON_DSLL, UNSPEC_LOONGSON_DSRL): New.
378 (VWB): New mode iterator.
379 (V_inner): New mode attribute.
380 (loongson_vec_init1_<VHB>): New.
381 (*vec_concatv2si): New.
382 (and<VWHB>3, ior<VWHB>3, xor<VWHB>3, one_cmpl<VWHB>2): New.
383 (*loongson_nor): New.
384 (loongson_pextrh): Un-macro-ify.
385 (loongson_pmaddhw): Likewise.
386 (smaxv4hi3, umaxv8qi3, sminv4hi3, uminv8qi3): Likewise.
387 (loongson_pinsrh_0): Represent with vec_select+vec_concat.
388 (loongson_pinsrh_1, loongson_pinsrh_2, loongson_pinsrh_3): Likewise.
389 (*vec_setv4hi, vec_setv4hi): New.
390 (sdot_prodv4hi): New.
391 (smax<VWB>3, smin<VWB>3): New.
392 (reduc_uplus_v8qi): New.
393 (loongson_pshufh): Remove destination matching input.
394 (ashl<VWH>3, ashr<VWH>3, lshr<VWH>3): Fix type attribute.
395 (vec_interleave_high<VWHB>, vec_interleave_low<VWHB>): Remove.
396 (loongson_punpckhbh, loongson_punpckhhw, loongson_punpckhhw_qi,
397 loongson_punpckhwd, loongson_punpckhwd_qi, loongson_punpckhwd_hi,
398 loongson_punpcklbh, loongson_punpcklhw, loongson_punpcklhw_qi,
399 loongson_punpcklwd, loongson_punpcklwd_qi, loongson_punpcklwd_hi,
400 vec_perm_const<VWHB>, vec_unpacks_lo_<VHB>, vec_unpacks_hi_<VHB>,
401 vec_unpacku_lo_<VHB>, vec_unpacku_hi_<VHB>, vec_shl_<VWHBDI>,
402 vec_shr_<VWHBDI>, reduc_uplus_<VWH>, reduc_splus_<VWHB>,
403 reduc_smax_<VWHB>, reduc_smin_<VWHB>, reduc_umax_<VWHB>,
404 reduc_umin_<VB>): New.
405 * config/mips/mips-ps-3d.md (vec_perm_const_ps): New.
406 (mips_pul_ps, mips_puu_ps, mips_pll_ps, mips_plu_ps): Expand in
407 terms of vec_perm_const_ps.
408 (vec_perm_constv2sf): New.
409 (vec_initv2sf): Use mips_expand_vector_init.
410 (vec_concatv2sf): Rename from vec_initv2sf_internal.
411 (vec_setv2sf): Use vec_perm_const_ps.
412 (reduc_splus_v2sf, reduc_smin_v2sf, reduc_smax_v2sf): New.
413 * config/mips/loongson.h (pshufh_u, pshufh_s): Don't pass dest to
415 * config/mips/mips-modes.def (V16QI, V8HI, V4SI, V4SF): New modes.
416 * config/mips/mips-protos.h: Update.
417 * config/mips/mips.c (mips_get_arg_info): Match V2SFmode, not all
419 (mips_return_mode_in_fpr_p): Likewise.
420 (mips_cannot_change_mode_class): Allow 8-byte integral mode changes.
421 (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw,
422 CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh,
423 CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): Remove.
424 (mips_builtins): Remove first operand for loongson pshufh builtins.
425 (MAX_VECT_LEN, struct expand_vec_perm_d): New.
426 (mips_expand_vselect, mips_expand_vselect_vconcat,
427 mips_expand_vpc_loongson_even_odd, mips_expand_vpc_loongson_pshufh,
428 mips_expand_vpc_loongson_bcast, mips_expand_vec_perm_const_1,
429 mips_expand_vec_perm_const, mips_vectorize_vec_perm_const_ok,
430 mips_expand_vec_unpack, mips_constant_elt_p, mips_expand_vi_broadcast,
431 mips_expand_vi_constant, mips_expand_vi_loongson_one_pinsrh,
432 mips_expand_vi_general, mips_expand_vec_reduc, mips_expand_vec_minmax,
433 TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
434 (mips_expand_vector_init): Rewrite.
435 * config/mips/predicates.md (const_2_or_3_operand): New.
436 (const_0_to_3_operand): New.
438 2011-12-23 Dmitry Plotnikov <dplotnikov@ispras.ru>
440 * config/arm/neon.md (float<mode><V_cvtto>2): New.
441 (floatuns<mode><V_cvtto>2): New.
442 (fix_trunc<mode><V_cvtto>2): New.
443 (fix_truncuns<mode><V_cvtto>2): New.
444 * config/arm/iterators.md (V_cvtto): New iterator.
446 2011-12-23 Richard Guenther <rguenther@suse.de>
448 PR rtl-optimization/50396
449 * simplify-rtx.c (simplify_binary_operation_1): Properly
450 guard code that only works for integers.
452 2011-12-23 Tristan Gingold <gingold@adacore.com>
454 * config/vms/vms-crtlmap.map (log10): Fix typo.
456 2011-12-23 Tristan Gingold <gingold@adacore.com>
458 * config/ia64/vms.h (SUPPORTS_ONE_ONLY): Define.
460 2011-12-22 Bin Cheng <bin.cheng@arm.com>
461 Richard Guenther <rguenther@suse.de>
463 PR tree-optimization/43491
464 * tree-ssa-pre.c (eliminate): Don't replace global register
465 variable when it is the RHS of a single assign.
467 2011-12-22 Joey Ye <joey.ye@arm.com>
469 * toplev.c (process_options): Fix typo.
471 2011-12-22 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
474 * config/pa/pa.c (pa_som_tm_clone_table_section): New function.
475 (som_tm_clone_table_section): Declare.
476 (pa_file_start_space): Create $TM_CLONE_TABLE$ subspace.
477 (pa_som_asm_init_sections): Init som_tm_clone_table_section.
478 * config/pa/som.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define.
480 2011-12-22 Richard Sandiford <rdsandiford@googlemail.com>
482 * doc/tm.texi.in (TARGET_PREPARE_PCH_SAVE): New hook.
483 * doc/tm.texi: Regenerate.
484 * target.def (prepare_pch_save): New hook.
485 * c-family/c-pch.c (c_common_write_pch): Call it.
486 * config/mips/mips.c (was_mips16_pch_p): Delete.
487 (mips_set_mips16_mode): Don't refer to was_mips16_pch_p.
488 (mips_prepare_pch_save): New function.
489 (TARGET_PREPARE_PCH_SAVE): Define.
491 2011-12-22 Aldy Hernandez <aldyh@redhat.com>
494 * opts.c (finish_options): Call sorry on -fgnu-tm and
495 -fnon-call-exceptions combination.
497 2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
499 * doc/invoke.texi (C++ Dialect Options): Add missing options and
500 move -Wzero-as-null-pointer-constant to ...
501 (Warning Options): ... here.
503 2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
506 * doc/invoke.texi (i386 and x86-64 Options): Fix description of
507 -mtune without -march.
509 2011-12-21 Richard Earnshaw <rearnsha@arm.com>
512 * arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
515 2011-12-22 Tristan Gingold <gingold@adacore.com>
517 * config/ia64/ia64.c (ia64_promote_function_mode): Remove.
518 (TARGET_PROMOTE_FUNCTION_MODE): Remove.
519 (ia64_function_value): Call promote_function_mode instead of
520 ia64_promote_function_mode.
521 * config/ia64/vms.h (PROMOTE_MODE): Define.
522 (TARGET_PROMOTE_FUNCTION_MODE): Define.
524 2011-12-22 Uros Bizjak <ubizjak@gmail.com>
527 * common/config/alpha/alpha-common.c (alpha_option_optimization_table):
528 Enable flag_ree at -O2 or higher.
530 2011-12-22 Richard Guenther <rguenther@suse.de>
533 * lto.c (uniquify_nodes): Register TYPE_DECLs with the
536 2011-12-22 Bernd Schmidt <bernds@codesourcery.com>
538 * tree-pass.h (pass_reload): Declare.
539 * ira.c (overall_cost_before, saved_flag_ira_share_spill_slots):
540 New global variables, moved out of ira.
541 (do_reload): New static function, split off from the second half
545 (pass_ira): Use TV_IRA, set gate to NULL, and set flags to
547 (rest_of_handle_reload): New static function.
550 2011-12-22 Uros Bizjak <ubizjak@gmail.com>
552 * common/config/i386/i386-common.c (ix86_option_optimization_table):
553 Move OPT_free processing from ...
554 * config/i386/i386.c (ix86_option_override_internal): ... here.
556 2011-12-21 Richard Earnshaw <rearnsha@arm.com>
559 * arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
560 weak function on bare-metal EABI targets.
562 2011-12-21 Jonathan Wakely <jwakely.gcc@gmail.com>
563 Jim Avera <james_avera@yahoo.com>
565 * doc/extend.texi (__builtin_expect): Improve example.
567 2011-12-21 Uros Bizjak <ubizjak@gmail.com>
569 * config/i386/i386.c (ix86_option_override_internal): Enable flag_ree
570 also for 32bit targets.
572 2011-12-21 Richard Henderson <rth@redhat.com>
575 * dwarf2cfi.c (dwarf2out_frame_debug): Move any_cfis_emitted code...
576 (scan_trace): ... here.
578 2011-12-21 Jason Merrill <jason@redhat.com>
580 * doc/standards.texi (C++ language): Update for C++11.
582 2011-12-21 Jakub Jelinek <jakub@redhat.com>
584 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Initialize
585 *op0 and *op1 to NULL_TREE first to avoid warnings.
586 * calls.c (initialize_argument_information): Initialize base to avoid
591 * tree-eh.c (decide_copy_try_finally): At -O0, return true
592 even when ndests is not 1, if there are only gimple_clobber_p
593 (or debug) stmts in the finally sequence.
594 * tree-inline.c (estimate_num_insns): Return 0 for gimple_clobber_p
597 2011-12-21 Aldy Hernandez <aldyh@redhat.com>
600 * trans-mem.c (tm_log_add): Use create_tmp_var_reg.
602 2011-12-21 Martin Jambor <mjambor@suse.cz>
604 * tree-into-ssa.c (rewrite_update_stmt): Do not dump extra newlines.
605 (rewrite_update_enter_block): Likewise.
606 (dump_update_ssa): Likewise.
607 (update_ssa): Likewise but also dump a newline at the beginning.
609 2011-12-21 Enkovich Ilya <ilya.enkovich@intel.com>
612 * implicit-zee.c: Delete.
614 * Makefile.in: Replace implicit-zee.c with ree.c.
615 * config/i386/i386.c (ix86_option_override_internal): Rename
616 flag_zee to flag_ree.
617 * common.opt (fzee): Ignored.
619 * passes.c (init_optimization_passes): Replace pass_implicit_zee
621 * tree-pass.h (pass_implicit_zee): Delete.
623 * timevar.def (TV_ZEE): Delete.
625 * doc/invoke.texi: Add -free description.
627 2011-12-21 Tristan Gingold <gingold@adacore.com>
629 * config/vms/vms-protos.h (vms_function_section): New prototype.
630 * config/vms/vms.c (vms_function_section): New function.
631 * config/vms/vms.h (TARGET_ASM_FUNCTION_SECTION): Define.
633 2011-12-21 Richard Guenther <rguenther@suse.de>
636 * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
637 mode of the pseudo as destination mode. Only assert that
638 is equal to the promoted mode of the decl if it is a REG.
640 2011-12-21 Tristan Gingold <gingold@adacore.com>
642 * config/vms/xm-vms.h (STANDARD_EXEC_PREFIX): Remove define.
644 2011-12-20 Richard Henderson <rth@redhat.com>
646 * config/ia64/ia64.c (MAX_VECT_LEN): New.
647 (struct expand_vec_perm_d): New.
648 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
649 (ia64_unpack_assemble): Use ia64_expand_vec_perm_const_1.
650 (expand_vselect, expand_vselect_vconcat): New.
651 (expand_vec_perm_identity, expand_vec_perm_shrp): New.
652 (expand_vec_perm_1, expand_vec_perm_broadcast): New.
653 (expand_vec_perm_interleave_2, expand_vec_perm_v4hi_5): New.
654 (ia64_expand_vec_perm_const_1, ia64_expand_vec_perm_const): New.
655 (ia64_vectorize_vec_perm_const_ok): New.
656 (ia64_expand_vec_setv2sf, ia64_expand_vec_perm_even_odd): New.
657 * config/ia64/ia64-protos.h: Update.
658 * config/ia64/vect.md (VEC): New mode iterator.
659 (vecint): New mode attribute.
660 (vec_interleave_lowv8qi, vec_interleave_highv8qi): Privatize with '*'.
661 (vec_interleave_lowv4hi, vec_interleave_highv4hi): Likewise.
662 (vec_interleave_lowv2si, vec_interleave_highv2si): Likewise.
663 (vec_interleave_lowv2sf, vec_interleave_highv2sf): Likewise.
664 (mix1_even, mix1_odd, mux1_alt): Likewise.
665 (mux1_brcst_qi): Remove '*' from name.
666 (vec_extract_evenv8qi, vec_extract_oddv8qi): Remove.
667 (vec_extract_evenv4hi, vec_extract_oddv4hi): Remove.
668 (vec_extract_evenv2si, vec_extract_oddv2si): Remove.
669 (vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
670 (vec_extract_evenodd_helper): Remove.
671 (vec_setv2sf): Use ia64_expand_vec_setv2sf.
672 (vec_pack_trunc_v4hi): Use ia64_expand_vec_perm_even_odd.
673 (vec_pack_trunc_v2si): Likewise.
674 (vec_perm_const<VEC>): New.
676 2011-12-20 Richard Henderson <rth@redhat.com>
678 * tree-vect-generic.c (expand_vector_operations_1): Correct tests
679 for vector types -- use the type not the mode. Fix optab selection
680 for vector shifts by a scalar. Handle over-large integer modes
683 2011-12-20 Richard Henderson <rth@redhat.com>
685 * config/arm/arm.md (*arm_xorsi3): Match iorsi3 and perform
686 post-reload splitting.
688 * config/arm/arm.md (*arm_cmpdi_unsigned): Enable for thumb2.
689 * config/arm/arm.c (arm_select_cc_mode): Use it.
691 2011-12-20 Richard Sandiford <rdsandiford@googlemail.com>
693 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
694 handling of signedness differences to integer types. Only build
695 a new optype if type1 isn't correct.
697 2011-12-20 Vladimir Makarov <vmakarov@redhat.com>
700 * ira-costs.c (find_costs_and_classes): Prefer registers even
701 if the memory cost is the same.
703 2011-12-20 Joseph Myers <joseph@codesourcery.com>
705 * c-decl.c (diagnose_mismatched_decls, grokdeclarator, grokfield)
706 (finish_struct): Refer to C11 in comments. Use flag_isoc11.
707 * c-parser.c (c_parser_static_assert_declaration)
708 (c_parser_static_assert_declaration_no_semi, c_parser_declspecs)
709 (c_parser_alignas_specifier, c_parser_alignof_expression): Refer
710 to C11 in comments. Use flag_isoc11.
711 * c-typeck.c (comptypes_check_different_types): Refer to C11 in
713 * doc/cpp.texi (Overview): Refer to -std=c11 instead of -std=c1x.
714 * doc/cppopts.texi (-std=c11, -std=gnu11): Document in preference
715 to -std=c1x and -std=gnu1x.
716 * doc/extend.texi (Inline, Alternate Keywords, Other Builtins)
717 (__builtin_complex, Unnamed Fields): Refer to -std=c11 and C11
718 instead of -std=c1x and C1X.
719 * doc/invoke.texi (-std=c11, -std=iso9899:2011): Document in
720 preference to -std=c1x.
721 (-std=gnu11): Document in preference to -std=gnu1x.
722 * doc/standards.texi: Document C11 instead of C1X. Document C11
723 as actual standard. Document headers required from freestanding
725 * ginclude/float.h, ginclude/stddef.h: Test __STDC_VERSION__ >=
726 201112L for C11. Update comments to refer to C11.
728 2011-12-20 Andreas Schwab <schwab@linux-m68k.org>
730 * configure: Regenerate.
732 2011-12-20 Bernd Schmidt <bernds@codesourcery.com>
735 * expr.c (store_field): Avoid a direct store if the mode is larger
736 than the size of the bit field.
737 * stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
738 treat non-volatile bit fields like volatile ones.
739 * toplev.c (process_options): Disallow combination of
740 -fstrict-volatile-bitfields and ABI versions less than 2.
741 * config/arm/arm.c (arm_option_override): Don't enable
742 flag_strict_volatile_bitfields if the ABI version is less than 2.
743 * config/h8300/h8300.c (h8300_option_override): Likewise.
744 * config/rx/rx.c (rx_option_override): Likewise.
745 * config/m32c/m32c.c (m32c_option_override): Likewise.
746 * config/sh/sh.c (sh_option_override): Likewise.
748 2011-12-20 Richard Guenther <rguenther@suse.de>
751 * dwarf2out.c (modified_type_die): When the type variant
752 chain is corrupt use the types name, if available, instead
755 2011-12-20 Tristan Gingold <gingold@adacore.com>
757 * config/alpha/alpha.c (alpha_start_function): Adjust condition to
758 create VMS trampoline entry point.
760 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com>
762 PR rtl-optimization/42839
763 * fwprop.c (forward_propagate_subreg): Skip the SIGN/ZERO_EXTEND
764 optimization if the source register is already extended.
766 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com>
768 * lower-subreg.c (can_decompose_p): Check every word of a hard
771 2011-12-19 Sandra Loosemore <sandra@codesourcery.com>
772 Tom de Vries <tom@codesourcery.com>
775 * cse.c (find_comparison_args): Detect fixed point and
778 2011-12-19 Aldy Hernandez <aldyh@redhat.com>
781 * trans-mem.c (ipa_tm_create_version): Unset DECL_WEAK.
783 2011-12-19 Quentin Neill <quentin.neill@amd.com>
786 * config/i386/driver-i386.c (host_detect_local_cpu): Also check
787 family to distinguish PROCESSOR_ATHLON.
789 2011-12-19 Richard Guenther <rguenther@suse.de>
792 * streamer-hooks.h (struct streamer_hooks): Add second
793 ref_p parameter to write_tree.
794 (stream_write_tree): Adjust.
795 (stream_write_tree_shallow_non_ref): New define.
796 * lto-streamer.h (lto_output_tree): Adjust.
797 * lto-streamer-out.c (lto_output_tree): Likewise.
798 * tree-streamer-out.c (streamer_write_chain): Only
799 force the immediate tree to be streamed as non-reference.
801 2011-12-19 Martin Jambor <mjambor@suse.cz>
803 PR tree-optimization/51583
804 * tree-sra.c (load_assign_lhs_subreplacements): Call
805 force_gimple_operand_gsi when necessary also in case of no
806 corresponding replacement on the RHS.
808 2011-12-19 Jakub Jelinek <jakub@redhat.com>
810 * gimple.h (gimplify_seq_add_stmt): Rename to...
811 (gimple_seq_add_stmt_without_update): ... this.
812 * gimplify.c (gimplify_seq_add_stmt): Rename to...
813 (gimple_seq_add_stmt_without_update): ... this.
814 (gimplify_seq_add_stmt): New inline wrapper for it.
815 * tree-vect-patterns.c (append_pattern_def_seq): Use
816 gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt.
818 PR tree-optimization/51596
819 * tree-cfg.c (replace_uses_by): Call gimple_purge_dead_eh_edges
823 PR tree-optimization/51606
824 * tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq):
825 New inline functions.
826 (vect_recog_over_widening_pattern,
827 vect_recog_vector_vector_shift_pattern,
828 vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern,
829 adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them.
831 2011-12-19 Richard Guenther <rguenther@suse.de>
834 * tree.c (free_lang_data_in_type): Do not unlink TYPE_DECL
836 (find_decls_types_r): Walk TYPE_DECLs in TYPE_FIELDS.
837 * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Do
838 not stream TREE_CHAIN.
839 (write_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
840 using streamer_write_chain.
841 * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
842 Do not stream TREE_CHAIN.
843 (lto_input_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
844 using streamer_read_chain.
845 * gimple-streamer-in.c (input_gimple_stmt): Skip non-FIELD_DECLs.
846 * gimple.c (gimple_canonical_types_compatible_p): Properly
847 handle trailing non-FIELD_DECLs in TYPE_FIELDS.
849 2011-12-19 Andreas Schwab <schwab@linux-m68k.org>
851 * configure: Regenerate.
853 2011-12-19 Bernd Schmidt <bernds@codesourcery.com>
855 * emit-rtl.c (init_emit_once): Initialize const_tiny_rtx[3] for
856 partial integer modes.
858 2011-12-19 Andreas Schwab <schwab@linux-m68k.org>
861 * config/m68k/m68k.h (FL_CAS, TARGET_CAS): Define.
862 * config/m68k/m68k.c (FL_FOR_isa_20): Add FL_CAS.
863 * config/m68k/sync.md: Use TARGET_CAS instead of (TARGET_68020 ||
866 2011-12-18 Anatoly Sokolov <aesok@post.ru>
868 * config/ia64/ia64.h (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
869 LEGITIMATE_ADDRESS_REG, LEGITIMATE_ADDRESS_DISP,
870 GO_IF_LEGITIMATE_ADDRESS): Remove macros.
871 * config/ia64/ia64.c (TARGET_LEGITIMATE_ADDRESS_P): Define.
872 (ia64_reg_ok_for_base_p, ia64_legitimate_address_reg,
873 ia64_legitimate_address_disp, ia64_legitimate_address_p): New
876 2011-12-17 Tom de Vries <tom@codesourcery.com>
878 PR tree-optimization/51491
879 * tree-ssa-ccp.c (insert_clobber_before_stack_restore)
880 (gsi_prev_dom_bb_nondebug, insert_clobbers_for_var): New function.
881 (ccp_fold_stmt): Use insert_clobbers_for_var after a successful
882 fold_builtin_alloca_with_align.
883 (ccp_visit_stmt): Calculate and free dominator info.
885 2011-12-16 Eric Botcazou <ebotcazou@adacore.com>
887 * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
888 (frame_blockage): New expander.
889 (frame_blockage<P:mode>): New instruction.
890 * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
891 instructions establishing the frame isn't atomic, emit frame blockage.
893 2011-12-16 Tristan Gingold <gingold@adacore.com>
895 * config/alpha/vms.h (USE_TM_CLONE_REGISTRY): Define.
897 2011-12-16 Tristan Gingold <gingold@adacore.com>
899 * config/alpha/alpha.c (alpha_use_linkage): Follow transparent alias.
900 (alpha_write_one_linkage): Use assemble_name to emit linkage name.
902 2011-12-16 Tristan Gingold <gingold@adacore.com>
904 * config/vms/t-vms (vms.o, vms-c.o): Force output filename.
906 2011-12-16 Tristan Gingold <gingold@adacore.com>
908 * config/vms/vms.c (VMS_CRTL_GLOBAL): Define.
909 (vms_patch_builtins): Handle.
910 * config/vms/vms-crtlmap.map: Add an entry for environ.
912 2011-12-16 Jakub Jelinek <jakub@redhat.com>
915 * sel-sched-ir.c (create_copy_of_insn_rtx): Copy all notes
916 other than REG_EQUAL, REG_EQUIV and REG_LABEL_OPERAND.
918 PR tree-optimization/51576
919 * tree-cfg.c (replace_uses_by): Call maybe_clean_or_replace_eh_stmt
920 even if fold_stmt didn't change anything.
922 2011-12-16 Richard Guenther <rguenther@suse.de>
925 * dwarf2out.c (gen_type_die_with_usage): Use the context of
926 the TYPE_DECL as well if it is file-scope.
928 2011-12-15 DJ Delorie <dj@redhat.com>
930 * config/rl78/rl78.md (return): Rename to rl78_return.
931 * config/rl78/rl78.c (rl78_expand_epilogue): Use new name.
932 (rl78_expand_eh_epilogue): Use new name.
933 (rl78_calculate_death_notes): Likewise.
935 2011-12-15 Jakub Jelinek <jakub@redhat.com>
937 * tree-vectorizer.h (struct _stmt_vec_info): Remove pattern_def_stmt
938 field, add pattern_def_seq.
939 (STMT_VINFO_PATTERN_DEF_STMT): Remove.
940 (STMT_VINFO_PATTERN_DEF_SEQ): Define.
941 (NUM_PATTERNS): Bump to 10.
942 * tree-vect-loop.c (vect_determine_vectorization_factor,
943 vect_transform_loop): Adjust for pattern def changing from a single
944 gimple stmt to gimple_seq.
945 * tree-vect-stmts.c (vect_analyze_stmt, new_stmt_vec_info,
946 free_stmt_vec_info): Likewise.
947 * tree-vect-patterns.c (vect_recog_over_widening_pattern,
948 vect_recog_vector_vector_shift_pattern,
949 vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast,
950 adjust_bool_pattern, vect_mark_pattern_stmts): Likewise.
951 (vect_recog_sdivmod_pow2_pattern): New function.
952 (vect_vect_recog_func_ptrs): Add it.
954 * config/i386/sse.md (vcond<V_256:mode><VI_256:mode>,
955 vcond<V_128:mode><VI124_128:mode>, vcond<VI8F_128:mode>v2di):
956 Use general_operand instead of nonimmediate_operand for
957 operand 5 and no predicate for operands 1 and 2.
958 * config/i386/i386.c (ix86_expand_int_vcond): Optimize
959 x < 0 ? -1 : 0 and x < 0 ? 1 : 0 into vector arithmetic
962 2011-12-15 Georg-Johann Lay <avr@gjlay.de>
964 * config/avr/avr-protos.h (print_operand): Remove.
965 (print_operand_address): Remove.
966 * config/avr/avr.h (PRINT_OPERAND): Remove.
967 (PRINT_OPERAND_ADDRESS): Remove.
968 (PRINT_OPERAND_PUNCT_VALID_P): Remove.
969 * config/avr/avr.c (TARGET_PRINT_OPERAND): New hook define.
970 (TARGET_PRINT_OPERAND_ADDRESS): New hook define.
971 (TARGET_PRINT_OPERAND_PUNCT_VALID_P): New hook define.
972 (print_operand_address): Rename to...
973 (avr_print_operand_address): ...this and make static.
974 (print_operand): Rename to...
975 (avr_print_operand): ...this and make static.
976 (avr_print_operand_punct_valid_p): New static function.
978 2011-12-15 Andreas Tobler <andreast@fgznet.ch>
980 * config/i386/freebsd.h (TARGET_ASM_FILE_END): Define.
982 2011-12-15 Jakub Jelinek <jakub@redhat.com>
985 * c-parser.c (c_parser_omp_clause_num_threads,
986 c_parser_omp_clause_schedule): Call mark_exp_read.
988 2011-12-15 Romain Geissler <romain.geissler@gmail.com>
990 * builtins.def (BUILT_IN_STPNCPY_CHK): New definition.
991 * builtins.c (expand_builtin, fold_builtin_4, maybe_emit_chk_warning):
992 Add BUILT_IN_STPNCPY_CHK case.
993 * gimple-fold.c (gimple_fold_builtin): Likewise.
994 * tree-object-size.c (pass_through_call): Likewise.
995 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
996 call_may_clobber_ref_p_1): Likewise.
997 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call,
998 find_func_clobbers): Likewise.
999 * tree.h (fold_builtin_strncpy_chk): Rename to fold_builtin_stxncpy_chk
1000 * builtins.c (fold_builtin_strncpy_chk): Likewise.
1001 Rewrite stpncpy_chk calls to strncpy_chk calls if returned value is
1004 2011-12-15 Richard Guenther <rguenther@suse.de>
1007 * gimple.c (compare_type_names_p): Also compare the TREE_CODE.
1008 (iterative_hash_name): Also hash the TREE_CODE.
1009 (gimple_types_compatible_p_1): For types with a TYPE_DECL
1010 name and a type DECL_CONTEXT recurse to that type.
1011 (iterative_hash_gimple_type): Likewise.
1013 2011-12-15 Iain Sandoe <iains@gcc.gnu.org>
1015 * config/rs6000/rs6000.c (rs6000_emit_prologue): Move update of
1016 VRSave mask to save_world() when that is in use.
1018 2011-12-15 Richard Guenther <rguenther@suse.de>
1020 * lto-wrapper.c (run_gcc): In non-parallel mode remove
1021 ltrans inputs immediately after processing them. In parallel
1022 mode truncate the ltrans inputs in the make rule that processes
1023 them if temporary files are not to be preserved.
1025 2011-12-15 Anatoly Sokolov <aesok@post.ru>
1027 * config/arm/arm.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
1028 * config/arm/arm.c (arm_memory_move_cost, arm_register_move_cost):
1030 (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
1032 2011-12-15 Richard Guenther <rguenther@suse.de>
1035 * tree.h (REGISTER_DEFS_IN_THIS_STMT, NECESSARY,
1036 STMT_IN_SSA_EDGE_WORKLIST): Remove no longer existing flag
1038 (TREE_ASM_WRITTEN): Update documentation to mention its use
1039 on TYPE_DECLs from debug info generation.
1040 * tree-streamer-out.c (pack_ts_base_value_fields): Stream
1041 TREE_ASM_WRITTEN as always zero for TYPE_DECLs, similar to
1044 2011-12-15 Georg-Johann Lay <avr@gjlay.de>
1047 * config/avr/avr.c (expand_epilogue): Don't build SUBREG of fp.
1048 (avr_prologue_setup_frame): Ditto.
1050 2011-12-15 Jakub Jelinek <jakub@redhat.com>
1053 * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test
1054 !DECL_IGNORED_P instead of !DECL_ARTIFICIAL.
1056 2012-12-15 Richard Guenther <rguenther@suse.de>
1060 * lto-streamer-out.c (tree_is_indexable): Exclude block-local
1061 extern declarations.
1065 * tree-streamer-out.c (streamer_write_chain): Stream DECL_EXTERNAL
1066 VAR_DECLs and FUNCTION_DECLs locally.
1068 2011-12-14 Richard Henderson <rth@redhat.com>
1070 * config/arm/arm.md (*addsi3_compare0_scratch): Set predicable.
1071 (*compare_negsi_si, *compare_addsi2_op0): Likewise.
1072 (*compare_addsi2_op1, *zeroextractsi_compare0_scratch): Likewise.
1073 (*compareqi_eq0, *arm_cmpsi_insn, *arm_cmpsi_negshiftsi_si): Likewise.
1075 2011-12-14 Richard Guenther <rguenther@suse.de>
1077 * tree-cfg.c (replace_uses_by): Fixup TREE_CONSTANT for
1078 propagating all kinds of constants.
1080 2011-12-14 Richard Guenther <rguenther@suse.de>
1083 * lto-streamer-in.c (lto_read_body): Fixup local types
1084 TYPE_CANONICAL and variant chain.
1086 2011-12-14 Richard Guenther <rguenther@suse.de>
1088 * tree.c (free_lang_data_in_type): Do not clear fields
1089 dependent on debuginfo level setting.
1090 (find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
1091 * tree.h (TYPE_STUB_DECL): Properly check that we access a type.
1093 2011-12-14 Georg-Johann Lay <avr@gjlay.de>
1096 * config/avr/avr.md (mulpsi3): New expander.
1097 (*umulqihipsi3, *umulhiqipsi3): New insns.
1098 (*mulsqipsi3.libgcc, *mulpsi3.libgcc): New insns.
1099 (mulsqipsi3, *mulpsi3): New insn-and-splits.
1100 (ashlpsi3): Turn to expander. Move insn code to...
1101 (*ashlpsi3): ...this new insn.
1103 2011-12-14 Richard Guenther <rguenther@suse.de>
1105 * tree-cfg.c (replace_uses_by): Only mark blocks altered
1106 that will make a difference. Only recompute ADDR_EXPR
1107 invariantness if it could possibly have changed. Do so
1108 before folding the statement.
1110 2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
1112 * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
1113 * lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
1114 * lto-streamer-in.c (lto_read_body): Likewise.
1115 (lto_input_toplevel_asms): Likewise.
1116 * lto-section-in.c (lto_create_simple_input_block): Likewise.
1117 * ipa-inline-analysis.c (inline_read_section): Likewise.
1118 * ipa-prop.c (ipa_prop_read_section): Likewise.
1120 * df.h (DF_NOTE): Fix typo in comment.
1122 2011-12-13 Aldy Hernandez <aldyh@redhat.com>
1124 * trans-mem.c (ipa_tm_create_version_alias): Set DECL_CONTEXT and
1127 2011-12-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1129 * regmove.c (fixup_match_2): Only access call_used_regs with hard regs.
1131 2011-12-13 Andrew Pinski <apinski@cavium.com>
1132 Adam Nemet <anemet@caviumnetworks.com>
1134 * config/mips/mips-cpus.def: Add Octeon2.
1135 * config/mips/mips-tables.opt: Regenerate.
1136 * config/mips/mips.md (define_attr "cpu"): Add Octeon2.
1137 * config/mips/driver-native.c (host_detect_local_cpu): Support Octeon2.
1138 * config/mips/octeon.md (octeon_arith): Add Octeon2.
1139 (octeon_condmove): Likewise.
1140 (octeon_load): Rename to ..
1141 (octeon_load_o1): this.
1142 (octeon_load_o2): New reserve.
1143 (octeon_cop_o2): New reserve.
1144 (octeon_store): Match Octeon2 also.
1145 (octeon_brj): Rename to ..
1146 (octeon_brj_o1): this.
1147 (octeon_brj_o2): New reserve.
1148 (octeon_imul3): Rename to ...
1149 (octeon_imul3_o1): this.
1150 (octeon_imul3_o2): New reserve.
1151 (octeon_imul): Rename to ...
1152 (octeon_imul_o1): this.
1153 (octeon_imul_o2): New reserve.
1154 (octeon_mfhilo): Rename to ...
1155 (octeon_mfhilo_o1): This.
1156 (octeon_mfhilo_o2): New reserve.
1157 (octeon_imadd): Rename to ...
1158 (octeon_imadd_o1): this.
1159 (octeon_imadd_o2): New reserve.
1160 (octeon_idiv): Rename to ..
1161 (octeon_idiv_o1): This.
1162 (octeon_idiv_o2_si): New reserve.
1163 (octeon_idiv_o2_di): Likewise.
1164 (octeon_unknown): Match Octeon2 also.
1165 * config/mips/mips.c (mips_rtx_cost_data): Add Octeon2 cost data.
1166 (mips_issue_rate): Octeon2 can issue 2 at a time.
1167 * config/mips/mips.h (TARGET_OCTEON): Match Octeon2 also.
1168 (TARGET_OCTEON2): New define.
1169 (TUNE_OCTEON): Match Octeon2 also.
1171 2011-12-13 Richard Henderson <rth@redhat.com>
1173 * config/sparc/tso.h: New file.
1174 * config.gcc (sparc-*-linux*, sparc*-*-solaris2*): Use it.
1175 * config/sparc/sparc.c (sparc_option_override): Honor
1176 SUBTARGET_DEFAULT_MEMORY_MODEL.
1177 * config/sparc/sparc.h (SUBTARGET_DEFAULT_MEMORY_MODEL): New.
1179 2011-12-13 Aldy Hernandez <aldyh@redhat.com>
1182 * trans-mem.c (struct diagnose_tm): Remove saw_unsafe.
1183 (diagnose_tm_1): Same.
1184 (ipa_tm_execute): Do not test tm_may_enter_irr before we set it.
1185 (ipa_tm_scan_irr_function): Return gracefully when no
1186 DECL_STRUCT_FUNCTION.
1187 (ipa_tm_scan_irr_block): Believe the user on TM attributes.
1189 2011-12-13 Martin Jambor <mjambor@suse.cz>
1192 * tree-sra.c (propagate_subaccesses_across_link): Do not propagate
1193 sub-accesses of scalar accesses.
1195 2011-12-13 Martin Jambor <mjambor@suse.cz>
1197 PR tree-optimization/51362
1198 * ipa-cp.c (estimate_local_effects): When estimated size of a
1199 specialized clone is zero, bump it to one.
1201 2011-12-13 Richard Guenther <rguenther@suse.de>
1204 * tree.c (find_decls_types_r): Also walk DECL_ORIGINAL_TYPE.
1205 * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
1206 Stream DECL_ORIGINAL_TYPE.
1207 * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers):
1210 2011-12-13 Jakub Jelinek <jakub@redhat.com>
1213 2011-12-12 Jakub Jelinek <jakub@redhat.com>
1215 PR tree-optimization/51481
1216 * gimple-fold.c (gimple_fold_call): Call
1217 maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
1218 edges, but gimple_fold_builtin result can't throw.
1220 2011-12-13 Jakub Jelinek <jakub@redhat.com>
1221 Michael Matz <matz@suse.de>
1223 PR tree-optimization/51117
1224 * tree-eh.c (sink_clobbers): New function.
1225 (execute_lower_eh_dispatch): Call it for BBs ending with
1226 internally throwing RESX.
1227 * cfgexpand.c (add_scope_conflicts_1): Add all conflicts only
1228 at the first real instruction.
1230 2011-12-13 Tristan Gingold <gingold@adacore.com>
1232 * final.c (final_scan_insn): Guard the call to begin_epilogue
1235 2011-12-13 Tristan Gingold <gingold@adacore.com>
1237 * vmsdbgout.c (vmsdbgout_write_source_line): New function.
1238 (vmsdbgout_end_prologue): Call vmsdbgout_write_source_line.
1239 (vmsdbgout_begin_epilogue): Likewise.
1240 (vmsdbgout_end_epilogue): Likewise.
1241 (vmsdbgout_source_line): Move code to vmsdbgout_write_source_line.
1243 2011-12-13 Richard Guenther <rguenther@suse.de>
1246 * tree-cfg.c (replace_uses_by): Pass proper arguments to
1247 maybe_clean_or_replace_eh_stmt.
1249 2011-12-13 Richard Guenther <rguenther@suse.de>
1251 PR tree-optimization/51519
1252 * ipa-inline.c (edge_badness): Use edge growth in non-guessed
1253 branch probability case as well.
1255 2011-12-13 Revital Eres <revital.eres@linaro.org>
1257 * modulo-sched.c (mark_loop_unsched): Free bbs.
1259 2011-12-12 Jakub Jelinek <jakub@redhat.com>
1261 PR rtl-optimization/51495
1262 * function.c (thread_prologue_and_epilogue_insns): Don't add
1263 to bb_tail basic blocks that have EDGE_COMPLEX predecessor edges
1264 from basic blocks not needing prologue.
1266 PR tree-optimization/51481
1267 * gimple-fold.c (gimple_fold_call): Call
1268 maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
1269 edges, but gimple_fold_builtin result can't throw.
1271 2011-12-12 Vladimir Makarov <vmakarov@redhat.com>
1273 PR rtl-optimization/21617
1274 * ira-color.c (bucket_allocno_compare_func): Don't compare
1275 allocno classes. Compare number of hard registers needed.
1277 2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
1279 PR tree-optimization/50569
1280 * tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
1281 in the expression of MODEL instead of just the last one.
1283 2011-12-12 Jakub Jelinek <jakub@redhat.com>
1286 * calls.c (internal_arg_pointer_based_exp_scan): Don't use
1287 VEC_safe_grow_cleared if idx is smaller than VEC_length.
1289 2011-12-12 Richard Sandiford <richard.sandiford@linaro.org>
1292 * optabs.c (maybe_legitimize_operand_same_code): Use copy_to_mode_reg
1293 instead of force_reg. Do nothing if the address is already a
1294 non-virtual pseudo register.
1296 2011-12-12 Torvald Riegel <triegel@redhat.com>
1298 * gimplify.c (voidify_wrapper_expr): Add default handling for
1301 2011-12-12 Torvald Riegel <triegel@redhat.com>
1303 * tree-ssa-tail-merge.c (gimple_equal_p): Don't treat transaction
1306 2011-12-12 Iain Sandoe <iains@gcc.gnu.org>
1308 * config/darwin-sections.def (zobj_const_data_section): Fix over-
1309 length section name.
1311 2011-12-11 Richard Henderson <rth@redhat.com>
1313 * config/rs6000/rs6000.c (rs6000_expand_interleave): Use
1314 BYTES_BIG_ENDIAN, not TARGET_BIG_ENDIAN.
1316 2011-12-11 Jakub Jelinek <jakub@redhat.com>
1318 PR tree-optimization/51485
1319 * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on
1322 2011-12-11 Patrick Marlier <patrick.marlier@gmail.com>
1324 * trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove edge.
1326 2011-12-10 Richard Henderson <rth@redhat.com>
1328 * config/rs6000/altivec.md (altivec_vmrghb): Rewrite pattern as
1329 vec_select + vec_concat.
1330 (altivec_vmrghh, altivec_vmrghw, altivec_vmrghsf, altivec_vmrglb,
1331 altivec_vmrglh, altivec_vmrglw, altivec_vmrglsf): Likewise.
1332 (vec_perm_constv16qi): New.
1333 (vec_extract_evenv4si, vec_extract_evenv4sf, vpkuhum_nomode,
1334 vpkuwum_nomode, vec_extract_oddv8hi, vec_extract_oddv16qi,
1335 vec_interleave_high<VI>, vec_interleave_low<VI>): Remove.
1336 * config/rs6000/paired.md (paired_merge00): Rewrite pattern as
1337 vec_select + vec_concat.
1338 (paired_merge10, paired_merge01, paired_merge11): Likewise.
1339 (vec_perm_constv2sf): New.
1340 (vec_interleave_highv2sf, vec_interleave_lowv2sf,
1341 vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
1342 * config/rs6000/spe.md (spe_evmergehi): Rewrite pattern as
1343 vec_select + vec_concat.
1344 (spe_evmergehilo, spe_evmergelo, spe_evmergelohi): New.
1345 (vec_perm_constv2si): New.
1346 * config/rs6000/vector.md (vec_interleave_highv4sf,
1347 vec_interleave_lowv4sf, vec_interleave_high<VEC_64>,
1348 vec_interleave_low<VEC_64>): Remove.
1349 * config/rs6000/vsx.md (VS_double): New mode attribute.
1350 (UNSPEC_VSX_XXPERMDI): Remove.
1351 (vsx_xxpermdi_<VSX_L>_1): Rewrite pattern as vec_select + vec_concat.
1352 (vsx_xxmrghw_<VSX_W>, vsx_xxmrglw_<VSX_W>): Likewise.
1353 (vsx_xxpermdi_<VSX_L>): Change to expander.
1354 (vec_perm_const<VSX_D>): New.
1355 (vsx_mergel_<VSX_D>, vsx_mergeh_<VSX_D>): New.
1356 * config/rs6000/predicates.md (const_0_to_1_operand): New.
1357 (const_2_to_3_operand): New.
1358 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
1359 (altivec_expand_vec_perm_const): New.
1360 (rs6000_expand_vec_perm_const_1, rs6000_expand_vec_perm_const): New.
1361 (rs6000_vectorize_vec_perm_const_ok): New.
1362 (rs6000_do_expand_vec_perm): New.
1363 (rs6000_expand_extract_even, rs6000_expand_interleave): New.
1364 * config/rs6000/rs6000-builtin.def (VEC_MERGE*): Update rtx codes.
1365 * config/rs6000/rs6000-modes.def: Add double-wide vector modes.
1366 * config/rs6000/rs6000-protos.h: Update.
1368 2011-12-10 Richard Henderson <rth@redhat.com>
1370 * expr.c (expand_expr_real_2) [VEC_PERM_EXPR]: Avoid passing a
1371 CONST_INT to expand_vec_perm as the selector.
1372 * optabs.c (expand_vec_perm): Assert the selector is of a proper mode.
1374 2011-12-10 Richard Henderson <rth@redhat.com>
1376 * genmodes.c (struct mode_data): Remove wider_2x member.
1377 (blank_mode): Adjust initializer.
1378 (calc_wider_mode): Use XALLOCAVEC.
1379 (emit_move_wider): Select double-width same-element vectors for
1381 * machmode.h (GET_MODE_2XWIDER_MODE): Update documentation.
1382 * config/i386/i386.c (doublesize_vector_mode): Remove.
1383 (expand_vselect_vconcat): Use GET_MODE_2XWIDER_MODE instead.
1385 2011-12-10 Joern Rennecke <joern.rennecke@embecosm.com>
1387 * config/epiphany/epiphany.h (USE_LOAD_POST_INCREMENT): Define.
1388 (USE_LOAD_POST_DECREMENT, USE_STORE_POST_INCREMENT): Likewise.
1389 (USE_STORE_POST_DECREMENT): Likewise.
1391 * config/epiphany/epiphany.h (EPIPHANY_RETURN_REGNO): New macro,
1393 (INCOMING_RETURN_ADDR_RTX) .. this. Use EPIPHANY_RETURN_REGNO.
1394 (DWARF_FRAME_RETURN_COLUMN): New macro.
1396 * config/epiphany/epiphany-protos.h (epiphany_start_function): Declare.
1397 * config/epiphany/epiphany.c (epiphany_handle_interrupt_attribute):
1398 Split "timer" value into "timer0" and "timer1".
1399 Handle page_miss, message and wand. Don't handle static_flag.
1400 Adjust warning text.
1401 (epiphany_start_function): New function.
1402 (epiphany_compute_function_type): Split "timer" value into "timer0"
1403 and "timer1". Handle page_miss, message and wand.
1404 Don't handle static_flag.
1405 (epiphany_expand_epilogue): Don't use frame_insn for status / iret
1407 * config/epiphany/epiphany.h: ASM_DECLARE_FUNCTION_NAME: Define.
1408 (enum epiphany_function_type):
1409 Split EPIPHANY_FUNCTION_TIMER value into EPIPHANY_FUNCTION_TIMER0
1410 and EPIPHANY_FUNCTION_TIMER1.
1411 Remove EPIPHANY_FUNCTION_ILINK1 and EPIPHANY_FUNCTION_ILINK2 values.
1412 Add EPIPHANY_FUNCTION_PAGE_MISS and EPIPHANY_FUNCTION_MESSAGE values.
1413 Rename EPIPHANY_FUNCTION_STATIC_FLAG to EPIPHANY_FUNCTION_WAND.
1415 2011-12-10 Nathan Sidwell <nathan@acm.org>
1417 PR gcov-profile/51449
1418 * coverage.c (coverage_end_function): Always process the coverage
1421 2011-12-09 Aldy Hernandez <aldyh@redhat.com>
1424 * tree.c (build_common_builtin_nodes): Do not use TM_PURE
1425 attribute unless language has support for TM.
1426 * config/i386/i386.c (ix86_init_tm_builtins): Exit gracefully in
1427 the absence of TM builtins.
1429 2011-12-09 Eric Botcazou <ebotcazou@adacore.com>
1431 * gimple-fold.c (gimple_fold_stmt_to_constant_1) <GIMPLE_UNARY_RHS>:
1432 Also check the TYPE_MODE to recognize useless pointer conversions.
1434 2011-12-09 Jakub Jelinek <jakub@redhat.com>
1436 PR tree-optimization/51117
1437 * tree-eh.c (optimize_clobbers): Don't remove just one
1438 clobber, but all consecutive clobbers before RESX.
1439 Use gimple_clobber_p predicate.
1441 2011-12-09 Michael Meissner <meissner@linux.vnet.ibm.com>
1443 * config/rs6000/rs6000.c (altivec_expand_builtin): Call
1444 expand_call to return a valid funciton instead of return
1445 cosnt0_rtx/NULL_RTX if there was an error with the builtin.
1446 (altivec_expand_ld_builtin): Ditto.
1447 (rs6000_inner_target_options): If VSX is selected as a target
1448 attribute or pragma, enable ALTIVEC also.
1449 (rs6000_pragma_target_parse): Call rs6000_option_override_internal
1450 to do all of the standard processing when switching options,
1451 including redefining appropriate macros.
1453 PR rtl-optimization/51469
1454 * varasm.c (default_binds_local_p_1): If the symbol is a gnu
1455 indirect function, mark the symbol as non-local.
1457 2011-12-09 H.J. Lu <hongjiu.lu@intel.com>
1460 * Makefile.in (errors.o): Restored.
1462 2011-12-09 Richard Guenther <rguenther@suse.de>
1465 * tree.c (free_lang_data_in_decl): Remove freeing conditional
1468 2011-12-09 Joern Rennecke <joern.rennecke@embecosm.com>
1471 * emit-rtl.c (set_dst_reg_note): New function.
1472 * rtl.h (set_dst_reg_note): Declare.
1473 * optabs.c (expand_binop, expand_absneg_bit): Use set_dst_reg_note.
1474 (emit_libcall_block, expand_fix): Likewise.
1475 * function.c (assign_parm_setup_reg, expand_function_start): Likewise.
1476 * expmed.c (expand_mult_const, expand_divmod): Likewise.
1477 * reload1.c (gen_reload): Likewise.
1479 * dse.c (get_stored_val, get_call_args): Use gen_int_mode.
1480 * expmed.c (expand_divmod): Likewise.
1481 * combine.c (simplify_if_then_else): Likewise.
1483 2011-12-09 Kai Tietz <ktietz@redhat.com>
1485 * ira-color.c (print_hard_regs_subforest): Use
1486 HOST_WIDEST_INT_PRINT_DEC instead of %lld.
1487 (allocno_hard_regs): Change type of cost member to HOST_WIDEST_INT.
1488 (add_allocno_hard_regs): Change type of argument cost
1490 * ira-conflict.c (build_conflict_bit_table): Replace use
1491 of long-long by HOST_WIDEST_INT.
1493 2011-12-09 Georg-Johann Lay <avr@gjlay.de>
1496 * config/avr/avr.md (config/avr/avr.md, *sbix_branch_tmp): Use
1497 zero_extract:QIHI instead of zero_extract:HI.
1499 2011-12-09 Jakub Jelinek <jakub@redhat.com>
1500 Andrew Pinski <apinski@cavium.com>
1502 PR tree-optimization/51117
1503 * tree-eh.c (optimize_clobbers): New function.
1504 (execute_lower_eh_dispatch): Call it.
1506 2011-12-09 Richard Guenther <rguenther@suse.de>
1508 PR tree-optimization/51482
1509 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
1510 Make sure to only create REAL_TYPE and INTEGER_TYPE component vectors.
1512 2011-12-09 Kai Tietz <ktietz@redhat.com>
1514 * implicit-zee.c (num_realized): Change type to long.
1515 (num_ze_opportunities): Likewise.
1517 2011-12-08 Andrew Pinski <apinski@cavium.com>
1519 * config/mips/mips-cpus.def (octeon+): New CPU.
1520 * config/mips/mips-tables.opt: Regenerate.
1521 * config/mips/mips.h (MIPS_CPP_SET_PROCESSOR): Emit '+' as 'P'.
1523 2011-12-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1526 * tree-ssa-dom.c (enum expr_kind): Add EXPR_PHI.
1527 (struct hashable_expr): Add struct phi field.
1528 (initialize_hash_element): Handle phis; change to use XCNEWVEC.
1529 (hashable_expr_equal_p): Handle phis.
1530 (iterative_hash_hashable_expr): Likewise.
1531 (print_expr_hash_elt): Likewise.
1532 (free_expr_hash_elt): Likewise.
1533 (dom_opt_enter_block): Create equivalences from redundant phis.
1534 (eliminate_redundant_computations): Handle redundant phis.
1535 (lookup_avail_expr): Handle phis.
1537 2011-12-08 Jakub Jelinek <jakub@redhat.com>
1539 PR tree-optimization/51466
1540 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also copy
1543 2011-12-08 Richard Guenther <rguenther@suse.de>
1545 * tree-ssa-operands.c (add_stmt_operand): Do not mark stmts
1546 volatile when processing operands of an ADDR_EXPR.
1547 (get_indirect_ref_operands): Likewise.
1548 (get_tmr_operands): Likewise.
1549 (get_expr_operands): Likewise.
1551 2011-12-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1554 * config/s390/s390.c (s390_mainpool_finish): Emit the jump over
1555 the literal pool as jump insn.
1557 2011-12-08 Richard Guenther <rguenther@suse.de>
1559 PR tree-optimization/49772
1560 * tree-inline.c (optimize_inline_calls): Remove bail out on errors.
1562 2011-12-08 Richard Guenther <rguenther@suse.de>
1565 * lto-streamer-out.c (produce_symtab): Remove asserts.
1567 2011-12-08 Richard Guenther <rguenther@suse.de>
1570 * lto-streamer-out.c (tree_is_indexable): Localize variably
1571 modified types and their FIELD_DECLs.
1573 2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
1575 PR tree-optimization/51315
1576 * tree.h (get_object_or_type_alignment): Declare.
1577 * expr.c (get_object_or_type_alignment): Move to...
1578 * builtins.c (get_object_or_type_alignment): ...here. Add assertion.
1579 * tree-sra.c (tree_non_mode_aligned_mem_p): Rename to...
1580 (tree_non_aligned_mem_p): ...this. Add ALIGN parameter. Look into
1581 MEM_REFs and use get_object_or_type_alignment for them.
1582 (build_accesses_from_assign): Adjust for above change.
1583 (access_precludes_ipa_sra_p): Likewise.
1585 2011-12-08 Richard Guenther <rguenther@suse.de>
1588 * lto-streamer-out.c (tree_is_indexable): Exclude block-local
1589 extern declarations.
1591 2011-12-07 Andrew Pinski <apinski@cavium.com>
1594 * expr.c (do_store_flag): Rewrite code that looks for BIT_AND_EXPR for
1597 2011-12-07 Richard Guenther <rguenther@suse.de>
1599 PR tree-optimization/50823
1600 * ipa-inline.c (edge_badness): Do not account for the number of
1603 2011-12-07 Martin Jambor <mjambor@suse.cz>
1605 PR tree-optimization/50744
1606 * ipa-cp.c (good_cloning_opportunity_p): Assert size_cost is positive,
1607 compute evaluation in HOST_WIDEST_INT.
1608 (safe_add): New function
1609 (propagate_effects): Use safe_add to accumulate effects.
1611 2011-12-06 Joel Sherrill <joel.sherrill@oarcorp.com>
1613 * config/rs6000/rtems.h: Switch to using global_options_set
1614 in SUBSUBTARGET_OVERRIDE_OPTIONS.
1616 2011-12-06 David S. Miller <davem@davemloft.net>
1618 * config/sparc/visintrin.h: Add appropriate __VIS__ cpp protection.
1620 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1622 * config/avr/avr.c (avr_file_start): Fix missing ,
1624 2011-12-06 Jakub Jelinek <jakub@redhat.com>
1627 * config/i386/i386.c (ix86_emit_leave): Call ix86_add_cfa_restore_note
1630 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1632 Forward-port from gcc-4_6-branch r181936 2011-12-02.
1633 * config/avr/avr-mcus.def (avr_mcu_types): ATtiny4313 and
1634 AT86RF401 have a 16-bit SP (their manual is bogus).
1636 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1638 Forward-port from gcc-4_6-branch r181936 2011-12-02.
1641 * config/avr/avr.md (movhi_sp_r): Set insn condition to
1643 * config/avr/avr.c (output_movhi): Use "clr%B0" instead of "in
1644 %B0,__SP_H__" if AVR_HAVE_8BIT_SP.
1645 (avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
1647 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1651 * config/avr/avr.h (ADDR_SPACE_PGM, ADDR_SPACE_PGM1,
1652 ADDR_SPACE_PGM2, ADDR_SPACE_PGM3, ADDR_SPACE_PGM4,
1653 ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): Write as enum.
1654 (avr_addrspace_t): New typedef.
1655 (avr_addrspace): New declaration.
1656 * config/avr/avr-c.c (avr_toupper): New static function.
1657 (avr_register_target_pragmas, avr_cpu_cpp_builtins): Use
1658 avr_addrspace to get address space information.
1659 * config/avr/avr.c (avr_addrspace): New variable.
1660 (avr_out_lpm, avr_pgm_check_var_decl, avr_insert_attributes,
1661 avr_asm_named_section, avr_section_type_flags,
1662 avr_asm_select_section, avr_addr_space_address_mode,
1663 avr_addr_space_convert, avr_emit_movmemhi): Use it.
1664 (avr_addr_space_pointer_mode): Forward to avr_addr_space_address_mode.
1665 (avr_pgm_segment): Remove.
1667 2011-12-06 Richard Guenther <rguenther@suse.de>
1670 * varasm.c (assemble_alias): Move DECL_EXTERNAL implementation
1671 quirk adjustjment ...
1672 * passes.c (rest_of_decl_compilation): ... here.
1674 2011-12-06 Richard Guenther <rguenther@suse.de>
1677 * gimple-fold.c (gimplify_and_update_call_from_tree): Guard vdef check
1678 for the fact we do not have virtual operands when not optimizing.
1680 2011-12-06 Richard Guenther <rguenther@suse.de>
1682 PR tree-optimization/51245
1683 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces):
1685 (vn_reference_lookup_3): Use it. Properly valueize all refs we create.
1687 2011-12-06 Iain Sandoe <iains@gcc.gnu.org>
1689 * config/rs6000/rs6000.c (darwin_rs6000_override_options): Initialize
1692 2011-12-06 Richard Guenther <rguenther@suse.de>
1694 PR tree-optimization/51363
1695 * gimple.c (gimple_rhs_has_side_effects): Remove.
1696 * gimple.h (gimple_rhs_has_side_effects): Likewise.
1697 * tree-ssa-dom.c (optimize_stmt): Simplify conditional.
1699 2011-12-06 Alan Modra <amodra@gmail.com>
1702 * config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
1703 Do not mark r11 setup as frame-related. Pass correct offset to
1704 rs6000_emit_savres_rtx. Correct out-of-line rs6000_frame_related
1705 arguments. Correct sp_offset. Remove "offset" fudge from
1706 in-line rs6000_frame_related call. Rename misleading variable.
1707 Fix comments and whitespace. Tidy some expressions.
1708 (rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
1709 to r11 in out-of-line case. Correct sp_offset. Pass correct
1710 offset to rs6000_emit_savres_rtx. Rename misleading variable.
1711 Fix comments and whitespace. Tidy some expressions.
1712 (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
1713 adjustment when !saving_GPRs_inline. Correct register mode
1714 used in address calcs.
1715 (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
1716 !restoring_GPRs_inline.
1718 2011-12-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1720 * config/arm/vfp.md (*combine_vcvt_f64_<FCVTI32typename>): Fix
1721 formatting character for vmov.f64 case.
1723 2011-12-05 Jakub Jelinek <jakub@redhat.com>
1725 PR tree-optimization/51396
1726 * tree-ssa-math-opts.c (convert_mult_to_fma): Don't optimize
1727 if MUL_RESULT has zero uses.
1730 * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
1731 for debug info if scope is file_scope.
1734 * c-decl.c (c_finish_incomplete_decl, finish_decl): Call
1735 relayout_decl instead of layout_decl.
1737 2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
1739 * resource.c (init_resource_info): Only consider EXIT_IGNORE_STACK
1740 if there is in epilogue.
1742 2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
1744 * optabs.c (maybe_emit_sync_lock_test_and_set): Pass a null target
1745 to emit_library_call_value.
1746 (expand_atomic_compare_and_swap): Likewise.
1748 2011-12-05 Vladimir Makarov <vmakarov@redhat.com>
1751 * ira-int.h (struct ira_object): Remove add_data.
1752 (OBJECT_ADD_DATA): Remove.
1754 * ira-build.c (ira_create_object): Remove OBJECT_ADD_DATA
1757 * ira-color.c (object_hard_regs_t, object_hard_regs): Rename to
1758 allocno_hard_regs_t, allocno_hard_regs.
1759 (object_hard_regs_node_t, object_hard_regs_node): Rename to
1760 allocno_hard_regs_node_t and allocno_hard_regs_node.
1761 (struct allocno_color_data): Add new member last_process. Move
1762 profitable_hard_regs, hard_regs_node, and hard_regs_subnodes_start
1763 from object_color_data.
1764 (object_color_data_t, object_color_data, OBJECT_COLOR_DATA): Remove.
1765 (curr_allocno_process): New static variable.
1766 (object_hard_regs_eq, object_hard_regs_htab): Rename to
1767 allocno_hard_regs_eq and allocno_hard_regs_htab.
1768 (init_object_hard_regs, finish_object_hard_regs): Rename to
1769 init_allocno_hard_regs and finish_allocno_hard_regs.
1770 (object_hard_regs_compare, object_hard_regs_node_t): Rename to
1771 allocno_hard_regs_compare and allocno_hard_regs_node_t.
1772 (create_new_object_hard_regs_node): Rename to
1773 create_new_allocno_hard_regs_node.
1774 (add_new_object_hard_regs_node_to_forest): Rename to
1775 add_new_allocno_hard_regs_node_to_forest.
1776 (add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
1777 Rename to add_allocno_hard_regs_to_forest and
1778 collect_allocno_hard_regs_cover.
1779 (setup_object_hard_regs_nodes_parent): Rename to
1780 setup_allocno_hard_regs_nodes_parent.
1781 (remove_unused_object_hard_regs_nodes): Rename to
1782 remove_unused_allocno_hard_regs_nodes.
1783 (enumerate_object_hard_regs_nodes, object_hard_regs_nodes_num):
1784 Rename to enumerate_allocno_hard_regs_nodes and
1785 allocno_hard_regs_nodes_num.
1786 (object_hard_regs_nodes, object_hard_regs_subnode_t): Rename to
1787 allocno_hard_regs_nodes and allocno_hard_regs_subnode_t.
1788 (object_hard_regs_subnode, object_hard_regs_subnodes): Rename to
1789 allocno_hard_regs_subnode and allocno_hard_regs_subnodes.
1790 (object_hard_regs_subnode_index): Rename to
1791 allocno_hard_regs_subnode_index.
1792 (setup_object_hard_regs_subnode_index): Rename to
1793 setup_allocno_hard_regs_subnode_index.
1794 (get_object_hard_regs_subnodes_num): Rename to
1795 get_allocno_hard_regs_subnodes_num.
1796 (form_object_hard_regs_nodes_forest): Rename to
1797 form_allocno_hard_regs_nodes_forest.
1798 (finish_object_hard_regs_nodes_tree): Rename to
1799 form_allocno_hard_regs_nodes_forest
1800 (finish_object_hard_regs_nodes_forest): Rename to
1801 finish_allocno_hard_regs_nodes_forest.
1802 (setup_left_conflict_sizes_p): Use allocno data instead of object ones.
1803 Process conflict allocnos once.
1804 (update_left_conflict_sizes_p): Use allocno data instead of object
1805 ones. Change prototype signature.
1806 (empty_profitable_hard_regs): Use allocno data instead of object ones.
1807 (setup_profitable_hard_regs): Ditto.
1808 (get_conflict_profitable_regs): Rename to
1809 get_conflict_and_start_profitable_regs. Use allocno data for
1810 profitable regs calculation.
1811 (check_hard_reg_p): Change prototype signature. Check profitable
1812 regs for allocno not the objects.
1813 (assign_hard_reg): Process conflict allocnos only once for
1814 updating conflict costs.
1815 (setup_allocno_available_regs_num): Use allocno data instead of
1816 object ones. Modify debug output.
1817 (color_pass): Remove initialization and finalization of object
1820 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
1823 * config/arm/arm.md (*minmax_arithsi): Always require the else
1824 clause in the MINUS case.
1826 2011-12-05 Richard Guenther <rguenther@suse.de>
1828 PR tree-optimization/50904
1829 * tree-ssa-loop-im.c (struct mem_ref): Remove vops member.
1830 (MEM_ANALYZABLE): New.
1831 (memory_references): Remove clobbered_vops and vop_ref_map
1832 members, add all_refs_stored_in_loop member.
1833 (memref_free): Adjust.
1834 (mem_ref_alloc): Likewise.
1835 (gather_mem_refs_stmt): Do not record clobbers, instead
1836 record refs for unanalyzable stmts.
1837 (gather_mem_refs_in_loops): Do not propagate clobbers.
1838 (struct vop_to_refs_elt, vtoe_hash, vtoe_eq, vtoe_free,
1839 record_vop_access, get_vop_accesses, get_vop_stores,
1840 add_vop_ref_mapping): Remove.
1841 (create_vop_ref_mapping_loop): Adjust to simply record all stores.
1842 (analyze_memory_references): Adjust.
1843 (refs_independent_p): Check for not analyzable refs.
1844 (can_sm_ref_p): Likewise.
1845 (ref_indep_loop_p_1): Simplify.
1846 (tree_ssa_lim_finalize): Adjust.
1848 * tree-ssa-loop-im.c (stmt_cost): Simplify, use LIM_EXPENSIVE
1849 rather than magic constants. Assign zero cost to PAREN_EXPR
1850 and SSA_NAME copies. Assign cost proportional to the vector
1851 size for vector constructors.
1853 2011-12-05 Richard Guenther <rguenther@suse.de>
1855 * tree-ssa-alias.h (struct ao_ref_s): Add volatile_p field.
1856 * tree-ssa-alias.c (ao_ref_init): Initialize it.
1857 (ao_ref_init_from_ptr_and_size): Likewise.
1858 (refs_may_alias_p_1): Two volatile accesses conflict.
1859 (ref_maybe_used_by_call_p_1): Likewise.
1860 (call_may_clobber_ref_p_1): Likewise.
1861 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Initialize
1864 2011-12-05 Richard Guenther <rguenther@suse.de>
1866 * tree-ssa.c (verify_ssa): Verify SSA names in the loop over all SSA
1867 names. Remove SSA operand checking, call verify_ssa_operands.
1868 * tree-ssa-operands.h (verify_ssa_operands): Declare.
1869 * tree-ssa-operands.c (verify_ssa_operands): New function.
1871 2011-12-05 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1873 * config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
1874 * config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
1875 * config/arm/constraints.md ("Dt"): New constraint.
1876 * config/arm/predicates.md
1877 (const_double_vcvt_power_of_two_reciprocal): New.
1878 * config/arm/vfp.md (FCVTI32typename): New.
1879 (FCVT): New iterator.
1880 (*combine_vcvt_f32_<FCVTI32typename>): New.
1881 (*combine_vcvt_f64_<FCVTI32typename>): New.
1883 2011-12-05 Richard Guenther <rguenther@suse.de>
1885 * cgraph.c (cgraph_create_edge_1): Initialize
1886 call_stmt_cannot_inline_p from the stmt if possible.
1887 (cgraph_make_edge_direct): Likewise.
1888 * gimple-streamer-in.c (input_gimple_stmt): Do not
1889 call gimple_call_set_cannot_inline.
1890 * gimple.h (enum gf_mask): Remove GF_CALL_CANNOT_INLINE, shift values.
1891 (gimple_call_set_cannot_inline): Remove.
1892 (gimple_call_cannot_inline_p): Likewise.
1893 * ipa-inline-analysis.c (initialize_inline_failed): Look
1894 at the edge call_stmt_cannot_inline_p flag.
1895 * ipa-inline.c (can_inline_edge_p): Likewise.
1896 (early_inliner): Only update the edge flag.
1897 * ipa-prop.c (update_indirect_edges_after_inlining): Likewise.
1898 (ipa_modify_call_arguments): Do not call gimple_call_set_cannot_inline.
1899 * cgraphunit.c (assemble_thunk): Likewise.
1900 * gimple-fold.c (gimple_fold_call): Likewise.
1902 * tree.h (CALL_CANNOT_INLINE_P): Remove.
1903 * tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
1904 * builtins.c (expand_builtin_alloca): With -fmudflap do not expand
1905 alloca calls inline.
1906 * cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
1907 * gimple.c (gimple_build_call_from_tree): Do not read
1908 CALL_CANNOT_INLINE_P.
1909 * gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.
1911 2011-12-05 Jakub Jelinek <jakub@redhat.com>
1912 Eric Botcazou <ebotcazou@adacore.com>
1916 * calls.c (internal_arg_pointer_exp_state): New variable.
1917 (internal_arg_pointer_based_exp_1,
1918 internal_arg_pointer_exp_scan): New functions.
1919 (internal_arg_pointer_based_exp): New function.
1920 (mem_overlaps_already_clobbered_arg_p): Use it.
1921 (expand_call): Free internal_arg_pointer_exp_state.cache vector
1922 and clear internal_arg_pointer_exp_state.scan_start.
1924 2011-12-04 Kaz Kojima <kkojima@gcc.gnu.org>
1926 * config/sh/linux.h (TARGET_DEFAULT): Add MASK_SOFT_ATOMIC.
1927 * config/sh/sync.md: New file.
1928 * config/sh/sh.md: Include sync.md.
1929 * config/sh/sh.opt (msoft-atomic): New option.
1930 * doc/invoke.texi (SH Options): Document it.
1932 2011-12-04 Nathan Sidwell <nathan@acm.org>
1934 * gcov-io.h (struct gcov_info): Replace trailing array with
1936 * profile.c (branch_prob): Only call renamed
1937 coverage_begin_function once.
1938 * coverage.h (coverage_begin_output): Rename to ...
1939 (coverage_begin_function): ... here.
1940 * coverage.c (struct function_list): Rename to ...
1941 (struct coverage_data): ... this. Update all uses.
1942 (gcov_info_var, gcov_fn_info_type, gcov_fn_info_ptr_type): New globals.
1943 (bbg_file_opened, bbg_function_announced): Remove.
1944 (get_coverage_counts): Adjust message.
1945 (coverage_begin_ouput): Rename to ...
1946 (coverage_begin_function): ... here. Move file opening to
1947 coverage_init. Adjust for being called only once.
1948 (coverage_end_function): Remove bbg file and inhibit further
1949 output here on error.
1950 (build_info_type): Adjust for change to pointer to array.
1951 (build_info): Receive array of function pointers and adjust.
1952 (create_coverage): Break into ...
1953 (coverage_obj_init, coverage_obj_fn, coverage_obj_finish):
1954 ... these, and adjust.
1955 (coverage_init): Open the notes file here. Tidy.
1956 (coverage_finish): Call coverage_obj_init etc.
1958 2011-12-04 Ira Rosen <ira.rosen@linaro.org>
1961 * tree-vect-loop.c (vect_create_epilog_for_reduction): Create exit
1962 phi nodes for outer loop in case of double reduction.
1964 2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
1967 * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
1968 parameter as long long.
1970 2011-12-04 Richard Sandiford <rdsandiford@googlemail.com>
1973 * optabs.c (init_sync_libfuncs): Use "or" rather than "ior"
1974 in the external names.
1976 2011-12-03 Jack Howarth <howarth@bromo.med.uc.edu>
1978 * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Pass -no_pie for
1979 non-PIC code when targeting 10.7 or later.
1981 2011-12-03 Iain Sandoe <iains@gcc.gnu.org>
1983 * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when
1985 (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10.
1986 (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10.
1988 2011-12-03 Jakub Jelinek <jakub@redhat.com>
1990 * fold-const.c (fold_unary_loc): Fold VEC_UNPACK_LO_EXPR,
1991 VEC_UNPACK_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
1992 VEC_UNPACK_FLOAT_HI_EXPR with VECTOR_CST argument.
1993 (fold_binary_loc): Fold VEC_PACK_TRUNC_EXPR,
1994 VEC_PACK_FIX_TRUNC_EXPR, VEC_WIDEN_MULT_LO_EXPR
1995 and VEC_WIDEN_MULT_HI_EXPR with VECTOR_CST arguments.
1998 * tree-ssa.c (target_for_debug_bind): Also allow is_gimple_reg_type
1999 vars that aren't referenced.
2000 (tree-ssa-live.c (remove_unused_locals): Don't clear TREE_ADDRESSABLE
2001 of unreferenced local vars.
2002 * cfgexpand.c (expand_debug_expr): For DEBUG_IMPLICIT_PTR allow also
2003 TREE_ADDRESSABLE vars that satisfy target_for_debug_bind.
2005 2011-12-03 Anatoly Sokolov <aesok@post.ru>
2007 * config/arm/arm.h (LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Remove.
2008 * config/arm/arm-protos.h (aapcs_libcall_value): Remove.
2009 * config/arm/arm.c (TARGET_FUNCTION_VALUE_REGNO_P): Define.
2010 (arm_libcall_value_1, arm_function_value_regno_p): New function.
2011 (arm_function_value, arm_libcall_value): Use arm_libcall_value_1.
2012 (aapcs_libcall_value): Make static.
2013 (arm_libcall_value): Add static qualifier.
2015 2011-12-02 Jakub Jelinek <jakub@redhat.com>
2018 * config/i386/sse.md (mul<mode>3 with VI1_AVX2 iterator): For
2019 V32QImode use { 0,2,..,14,32,34,..,46,16,18,..,30,48,50,..,62 }
2020 permutation instead of extract even permutation.
2022 2011-12-02 Nathan Sidwell <nathan@acm.org>
2024 * gcov.c (struct arc_info): Add is_throw field.
2025 (struct (block_info): Add exceptional field, reduce flags size to
2027 (struct function_info): Add has_catch field.
2028 (struct line_info): Add unexceptional field.
2029 (process_file): Call find_exception_blocks if necessary.
2030 (read_graph_file): Adjust. Note if an exceptional edge is seen.
2031 (find_exception_blocks): New.
2032 (add_line_counts): Set line's unexceptional flag if not exceptional.
2033 (output_branch_count): Note exceptional arcs, lines and blocks.
2034 * gcov-dump.c (tag_arcs): Decode arc flags.
2035 * doc/gcov.texi: Document '=====' lines.
2037 2011-12-02 Anatoly Sokolov <aesok@post.ru>
2039 * config/ia64/ia64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS,
2040 PRINT_OPERAND_PUNCT_VALID_P): Remove macros.
2041 * config/ia64/ia64-protos.h (ia64_print_operand,
2042 ia64_print_operand_address): Remove.
2043 * config/ia64/ia64.c (TARGET_PRINT_OPERAND,
2044 TARGET_PRINT_OPERAND_ADDRESS, TARGET_PRINT_OPERAND_PUNCT_VALID_P):
2046 (ia64_print_operand_punct_valid_p): New function.
2047 (ia64_print_operand, ia64_print_operand_address): Make static.
2049 2011-12-02 Michael Meissner <meissner@linux.vnet.ibm.com>
2052 * config/rs6000/rs6000.c (def_builtin): Use the correct field to
2053 figure out the function's attributes.
2054 (struct builtin_description): Mark mask field as const since we no
2055 longer need to modify it for SPE and PAIRED builtins.
2057 2011-12-02 Joseph Myers <joseph@codesourcery.com>
2061 2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com>
2064 * loop-doloop.c (doloop_modify): New argument zero_extend_p and
2065 zero extend count after the correction to it is done.
2066 (doloop_optimize): Update call to doloop_modify, don't zero extend
2069 2008-11-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
2072 * loop-doloop.c (doloop_modify): Add from_mode argument that says what
2074 (doloop_optimize): Update call to doloop_modify.
2076 2011-12-02 Richard Guenther <rguenther@suse.de>
2079 * ipa.c (varpool_externally_visible_p): Register variables
2080 are always externally visible.
2082 2011-12-02 Sameera Deshpande <sameera.deshpande@arm.com>
2084 * gimple-pretty-print.c (dump_gimple_call): Dereference fn only if
2087 2011-12-02 Martin Jambor <mjambor@suse.cz>
2089 PR tree-optimization/50622
2090 * tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
2091 if both lacc and racc are grp_partial_lhs.
2093 2011-12-01 Kaz Kojima <kkojima@gcc.gnu.org>
2096 * config/sh/sh.c (expand_ashiftrt): Handle TARGET_SH2A same as
2098 (shl_sext_kind): Likewise.
2099 * config/sh/sh.h (SH_DYNAMIC_SHIFT_COST): Likewise.
2100 * config/sh/sh.md (ashlsi3_sh2a, ashrsi3_sh2a, lshrsi3_sh2a): Remove.
2101 (ashlsi3_std): Handle TARGET_SH2A same as TARGET_SH3.
2102 (ashlsi3): Likewise.
2103 (ashrsi3_d): Likewise.
2104 (lshrsi3_d): Likewise.
2105 (lshrsi3): Likewise.
2107 2011-12-01 Diego Novillo <dnovillo@google.com>
2110 * ipa-inline.c (can_inline_edge_p): If the edge E has a statement,
2111 use the statement's inline indicator instead of E's.
2112 Remove consistency check.
2114 2011-12-01 Diego Novillo <dnovillo@google.com>
2119 2011-11-29 Diego Novillo <dnovillo@google.com>
2121 * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
2122 Update field call_stmt_cannot_inline_p from call
2123 graph edge, if needed.
2124 * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
2126 2011-12-01 Nathan Sidwell <nathan@acm.org>
2128 PR gcov-profile/51113
2129 * coverage.c (build_var): Keep coverage variables static.
2131 2011-12-01 Jakub Jelinek <jakub@redhat.com>
2133 PR tree-optimization/51356
2134 * tree-vect-patterns.c (vect_recog_bool_pattern): Give up if
2135 vectype doesn't have VECTOR_MODE_P.
2138 * tree-ssa-dce.c (remove_dead_stmt): Add a debug stmt when removing
2139 as unnecessary a store to a variable with gimple reg type.
2140 * tree-ssa-live.c (remove_unused_locals): Clear TREE_ADDRESSABLE bit
2141 on local unreferenced variables.
2142 * cfgexpand.c (expand_gimple_basic_block): Don't emit DEBUG_INSNs
2143 for !target_for_debug_bind variables.
2145 2011-12-01 Patrick Marlier <patrick.marlier@gmail.com>
2148 * cgraph.h (cgraph_call_node_duplication_hooks): Declare.
2149 * cgraph.c (cgraph_call_node_duplication_hooks): Make global.
2150 * cgraphunit.c (cgraph_copy_node_for_versioning): Call it.
2152 2011-12-01 Andrew Pinski <apinski@cavium.com>
2155 * tree.c (free_lang_data_in_decl): Clear FIELD_DECL's
2158 2011-12-01 Jakub Jelinek <jakub@redhat.com>
2160 PR tree-optimization/51246
2161 * tree-predcom.c (replace_ref_with): Handle also clobber on the rhs.
2163 PR rtl-optimization/51014
2164 * loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs
2165 both from bb and orig_bb.
2167 2011-12-01 Joern Rennecke <joern.rennecke@embecosm.com>
2169 PR tree-optimization/50802
2170 * tree-vrp.c (simplify_conversion_using_ranges): Rewrite test
2171 considering what happens to ranges during sign changes and/or
2172 intermediate narrowing conversions.
2174 2011-11-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2177 * config/pa/pa.md (in_branch_delay): Disallow frame related insns.
2178 (in_nullified_branch_delay): Likewise.
2179 (in_call_delay): Likewise.
2181 2011-11-30 Richard Henderson <rth@redhat.com>
2183 * predict.c (expr_expected_value_1): Assume compare-and-swap builtin
2184 boolean return is true.
2186 2011-11-30 Jakub Jelinek <jakub@redhat.com>
2188 PR rtl-optimization/51044
2189 * dse.c (emit_inc_dec_insn_before): Ensure new_insn is an instruction
2190 rather than just insn body.
2193 * function.c (thread_prologue_and_epilogue_insns): If
2194 stack_realign_drap, add drap_reg to SET_UP_BY_PROLOGUE
2198 * tree-eh.c (cleanup_empty_eh_merge_phis): Add check to
2199 avoid creating duplicate edges here.
2200 (cleanup_empty_eh_unsplit): And remove it in the caller.
2202 2011-11-30 Andrew Pinski <apinski@cavium.com>
2205 * c-parser.c (c_parser_postfix_expression): Check groktypename results
2206 before looking at the main variant.
2208 2011-11-30 Jakub Jelinek <jakub@redhat.com>
2210 PR rtl-optimization/48721
2211 * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set
2212 reg_pending_barrier to TRUE_BARRIER.
2214 PR rtl-optimization/48721
2215 * sched-ebb.c (begin_move_insn): Insert empty unreachable
2216 block after BARRIER if insn is followed by it.
2218 2011-11-30 Richard Henderson <rth@redhat.com>
2220 * config/sparc/sparc-opts.h (enum sparc_memory_model_type): New.
2221 * config/sparc/sparc.opt (mmemory-model=): New option.
2222 * doc/invoke.texi (Sparc Options): Document it.
2223 * config/sparc/sparc.c (sparc_option_override): Provide default
2224 for sparc_memory_model.
2225 (sparc_emit_membar_for_model): Omit barrier combinations that are
2226 implied by the memory model.
2228 2011-11-30 Richard Henderson <rth@redhat.com>
2230 * config/sparc/sync.md (I124MODE): New mode iterator.
2231 (memory_barrier): Remove.
2232 (atomic_exchangesi): New.
2233 (swapsi): Rename from *swapsi.
2234 (atomic_test_and_set<I124MODE>): New.
2235 (ldstubqi): Rename from *ldstubqi, merge with expander.
2236 (ldstub<I24MODE>): Rename from *ldstub<I24MODE>, merge with expander.
2237 (sync_lock_test_and_setsi): Remove.
2238 (sync_lock_test_and_set<I12MODE>): Remove.
2240 2011-11-30 Richard Henderson <rth@redhat.com>
2242 * config/sparc/constraints.md ("w"): New.
2243 * config/sparc/predicates.md (mem_noofs_operand): New.
2244 * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Make static.
2245 Generate the boolean result of the atomic_compare_exchange.
2246 (sparc_expand_compare_and_swap): New.
2247 * config/sparc/sync.md (atomic_compare_and_swap<I>): New.
2248 (atomic_compare_and_swap<I48MODE>_1): Rename from
2249 *sync_compare_and_swap<I48MODE>, use mem_noofs_operand.
2250 (*atomic_compare_and_swapdi_v8plus): Rename from
2251 *sync_compare_and_swapdi_v8plus, use mem_noofs_operand.
2252 (sync_compare_and_swap<I12MODE>): Remove.
2253 (sync_compare_and_swap<I48MODE>): Remove.
2255 2011-11-30 Richard Henderson <rth@redhat.com>
2257 * config/sparc/predicates.md (register_or_v9_zero_operand): New.
2258 * config/sparc/sparc.md (UNSPEC_ATOMIC): New.
2259 * config/sparc/sync.md (atomic_load<I>): New.
2260 (atomic_loaddi_1, atomic_store<I>, atomic_storedi_1): New.
2262 2011-11-30 Richard Henderson <rth@redhat.com>
2264 * config/sparc/predicates.md (zero_or_v7_operand): New.
2265 * config/sparc/sparc.c (sparc_emit_membar_for_model): New.
2266 * config/sparc/sparc-protos.h: Update.
2267 * config/sparc/sync.md (mem_thread_fence): New.
2268 (memory_barrier): Use sparc_emit_membar_for_model.
2269 (membar, *membar_empty, *membar_storestore, *membar_storeload): New.
2270 (*membar_v8): Accept and ignore the membar mask.
2271 (*membar): Accept and print the membar mask.
2273 2011-11-30 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
2275 * config/arm/arm.c (arm_issue_rate): Cortex-A15 can triple issue.
2276 * config/arm/arm.md (mul64): New attribute.
2277 (generic_sched): Cortex-A15 is not scheduled generically.
2278 (cortex-a15.md): Include.
2279 * config/arm/cortex-a15.md: New machine description.
2280 * config/arm/t-arm (MD_INCLUDES): Add cortex-a15.md.
2282 2011-11-30 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
2284 * config/arm/t-arm (MD_INCLUDES): Ensure all md files are listed.
2286 2011-11-30 Iain Sandoe <iains@gcc.gnu.org>
2288 * doc/tm.texi.in (NEXT_OBJC_RUNTIME): Update macro description.
2289 * doc/tm.texi: Regenerate.
2290 * flags.h (flag_next_runtime): Remove references.
2291 * toplev.c: Likewise.
2292 * defaults.h (NEXT_OBJC_RUNTIME): Provide default.
2293 * gccspec.c (lang_specific_driver): Adjust use of NEXT_OBJC_RUNTIME.
2294 * config/darwin.c (darwin_override_options): Provide default
2295 Objective-C abi settings and target conflict checks.
2296 * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Remove unused
2297 code. Adjust indenting.
2299 2011-11-29 Joseph Myers <joseph@codesourcery.com>
2301 * config/sh/sh.h (enum reg_class, REG_CLASS_NAMES)
2302 (REG_CLASS_CONTENTS): Add NON_SP_REGS.
2303 (REGCLASS_HAS_GENERAL_REG): Handle NON_SP_REGS.
2304 * config/sh/constraints.md (u): New constraint.
2306 2011-11-29 Oleg Endo <oleg.endo@t-online.de>
2309 * config/sh/sh.c (sh_secondary_reload): Add case when FPUL
2310 register is being loaded from a pseudo in memory.
2312 2011-11-29 DJ Delorie <dj@redhat.com>
2314 * config.gcc (rl78-*-elf): New case.
2315 * doc/extend.texi: Add RL78 documentation.
2316 * doc/invoke.texi: Likewise.
2317 * doc/md.texi: Likewise.
2318 * doc/contrib.texi: Add RL78.
2319 * doc/install.texi: Add rl78-*-elf.
2320 * config/rl78: New directory for the Renesas RL78.
2322 2011-11-29 Jakub Jelinek <jakub@redhat.com>
2324 PR tree-optimization/51247
2325 * tree-vrp.c (extract_range_from_assert): For signed 1-bit precision
2326 types instead of adding 1 subtract -1 and instead of subtracting 1
2327 add -1 to avoid overflows.
2329 2011-11-29 Andrew MacLeod <amacleod@redhat.com>
2332 * optabs.c (maybe_optimize_fetch_op): New. Look for more optimal
2333 instructions for a FECTH_OP or OP_FECTH sequence.
2334 (expand_atomic_fetch_op): Call maybe_optimize_fetch_op.
2336 2011-11-29 Uros Bizjak <ubizjak@gmail.com>
2338 * config/i386/sync.md (UNSPEC_LDA, UNSPEC_STA): New unspecs.
2339 (movdi_via_fpu): Remove.
2340 (loaddi_via_fpu): New insn pattern.
2341 (storedi_via_fpu): Ditto.
2342 (atomic_loaddi_fpu): Use loaddi_via_fpu and storedi_via_fpu.
2343 (atomic_storedi_fpu): Ditto.
2344 * reg-stack.c (get_true_reg): Handle UNSPEC_LDA.
2345 (subst_stack_regs_pat): Handle UNSPEC_STA.
2347 2011-11-29 Uros Bizjak <ubizjak@gmail.com>
2349 * config/i386/i386.md (*floathi<mode>2_i387_with_temp): Do not
2350 allocate scratch memory for alternative 0.
2352 2011-11-29 Michael Meissner <meissner@linux.vnet.ibm.com>
2354 * config/rs6000/rs6000-builtins.def: Completely rewrite builtin
2355 handling to centralize more of the builtins in this file. Change
2356 some builtin enumerations to be more consistant. Use a new mask
2357 to hold the current builtins, including SPE and PAIRED builtins
2358 which no longer are set via target_flags masks. Add
2359 -mdebug=builtin debug support. For power machines, define all
2360 Altivec and VSX buitins when the compiler starts, but don't allow
2361 the use of a builtin unless the appropriate switch is used, or
2362 #pragma GCC target is used to change the options. If the user
2363 uses #pragma GCC target, update the appropriate hardware macros.
2364 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Ditto.
2365 * config/rs6000/rs6000.opt (rs6000_builtin_mask): Ditto.
2366 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Ditto.
2367 (rs6000_define_or_undefine_macro): Ditto.
2368 (rs6000_target_modify_macros): Ditto.
2369 (rs6000_cpu_cpp_builtins): Ditto.
2370 (altivec_overloaded_builtins): Ditto.
2371 (altivec_build_resolved_builtin): Ditto.
2372 * config/rs6000/rs6000.c (rs6000_target_modify_macros_ptr): Ditto.
2373 (rs6000_builtin_info): Ditto.
2374 (def_builtin): Ditto.
2375 (enable_mask_for_builtins): Ditto.
2376 (DEBUG_FMT_X): Ditto.
2377 (rs6000_debug_reg_global): Ditto.
2378 (rs6000_builtin_mask_calculate): Ditto.
2379 (rs6000_option_override_internal): Ditto.
2380 (rs6000_builtin_conversion): Ditto.
2381 (rs6000_builtin_vectorized_function): Ditto.
2382 (bdesc_3arg): Ditto.
2384 (bdesc_2arg): Ditto.
2385 (builtin_description_predicates): Ditto.
2386 (bdesc_altivec_preds): Ditto.
2387 (bdesc_spe_predicates): Ditto.
2388 (bdesc_spe_evsel): Ditto.
2389 (bdesc_paired_preds): Ditto.
2391 (bdesc_1arg): Ditto.
2392 (rs6000_overloaded_builtin_p): Ditto.
2393 (rs6000_expand_unop_builtin): Ditto.
2394 (bdesc_2arg_spe): Ditto.
2395 (spe_expand_builtin): Ditto.
2396 (rs6000_invalid_builtin): Ditto.
2397 (rs6000_expand_builtin): Ditto.
2398 (rs6000_init_builtins): Ditto.
2399 (spe_init_builtins): Ditto.
2400 (paired_init_builtins): Ditto.
2401 (altivec_init_builtins): Ditto.
2402 (builtin_function_type): Ditto.
2403 (rs6000_common_init_builtins): Ditto.
2404 (rs6000_builtin_reciprocal): Ditto.
2405 (rs6000_builtin_mask_names): Ditto.
2406 (rs6000_pragma_target_parse): Ditto.
2407 (rs6000_function_specific_print): Ditto.
2408 * config/rs6000/rs6000.h (MASK_DEBUG_BUILTIN): Ditto.
2409 (MASK_DEBUG_ALL): Ditto.
2410 (TARGET_DEBUG_BUILTIN): Ditto.
2411 (TARGET_EXTRA_BUILTINS): Ditto.
2412 (REGISTER_TARGET_PRAGMAS): Ditto.
2413 (enum rs6000_btc): Ditto.
2414 (RS6000_BTC_*): Ditto.
2415 (RS6000_BTM_*): Ditto.
2416 (enum rs6000_builtins): Ditto.
2417 * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Ditto.
2418 (rs6000_target_modify_macros): Ditto.
2419 (rs6000_target_modify_macros_ptr): Ditto.
2421 * config/rs6000/vector.md (unsfloat<VEC_int><mode>2): Use the
2422 standard name for converting vector unsigned values to floating
2423 point. Delete the TARGET_VECTORIZE_BUILTIN_CONVERSION hook, which
2424 is handled by machine independent code.
2425 * config/rs6000/rs6000.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Ditto.
2426 (rs6000_builtin_conversion): Ditto.
2428 2011-11-29 Dodji Seketeli <dodji@redhat.com>
2430 * tree-diagnostic (struct loc_t): Rename into struct loc_map_pair.
2431 (maybe_unwind_expanded_macro_loc): Adjust.
2433 2011-11-29 David Edelsohn <dje.gcc@gmail.com>
2434 Aldy Hernandez <aldyh@redhat.com>
2436 * trans-mem.c (ipa_tm_create_version_alias): Mangle new_decl
2438 (ipa_tm_create_version): Same.
2440 2011-11-29 Bernd Schmidt <bernds@codesourcery.com>
2442 * haifa-sched.c (recompute_todo_spec): Simplify and correct the
2443 code checking for a clobber of a condition register when deciding
2444 whether to predicate.
2446 2011-11-29 Diego Novillo <dnovillo@google.com>
2448 * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
2449 Update field call_stmt_cannot_inline_p from call graph edge, if needed.
2450 * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
2452 2011-11-29 Sameera Deshpande <sameera.deshpande@arm.com>
2454 * config/arm/arm.md (arm_movdi): Update NEG_POOL_RANGE.
2455 (movdf_soft_insn): Likewise.
2456 * config/arm/fpa.md (thumb2_movdf_fpa): Likewise.
2457 * config/arm/neon.md (neon_mov<mode>): Likewise.
2458 * config/arm/vfp.md (movdi_vfp): Likewise.
2459 (movdi_vfp_cortexa8): Likewise.
2460 (movdf_vfp): Likewise.
2462 2011-11-29 Jakub Jelinek <jakub@redhat.com>
2465 * expr.c (expand_expr_addr_expr_1): Don't call force_operand for
2466 EXPAND_SUM modifier.
2468 2011-11-29 Ira Rosen <ira.rosen@linaro.org>
2470 PR tree-optimization/51301
2471 * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that
2472 the last statement doesn't convert to a bigger type than the original
2473 type of the computation.
2475 2011-11-28 Richard Henderson <rth@redhat.com>
2477 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
2478 Handle overlap between retval and oldval. Always compute boolval
2481 2011-11-28 Jakub Jelinek <jakub@redhat.com>
2484 * tree-ssa.c (execute_update_addresses_taken): Remove
2485 var ={v} {CLOBBER} stmts instead of rewriting them into
2486 var_N ={v} {CLOBBER}.
2489 * function.c (convert_jumps_to_returns): When redirecting an edge
2490 succ to EXIT_BLOCK_PTR, clear EDGE_CROSSING flag.
2492 PR tree-optimization/50078
2493 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over
2494 TREE_THIS_VOLATILE also from the old to new lhs resp. rhs.
2496 PR tree-optimization/50682
2497 * tree-eh.c (maybe_remove_unreachable_handlers): New function.
2498 * tree-flow.h (maybe_remove_unreachable_handlers): New prototype.
2499 * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Call it.
2501 2011-11-28 Georg-Johann Lay <avr@gjlay.de>
2503 * doc/extend.texi (AVR Built-in Functions): Add documentation for
2504 __builtin_avr_map8 and __builtin_avr_map16.
2506 * config/avr/avr.md: Document new %t and %T asm output codes.
2507 (define_c_enum "unspec"): Add UNSPEC_MAP_BITS.
2508 (adjust_len): Add map_bits.
2509 (map_bitsqi, map_bitshi): New insns.
2510 * config/avr/avr-protos.h (avr_out_map_bits): New.
2511 * config/avr/avr-protos.c (print_operand): Implement %t and %T.
2512 (adjust_insn_length): Handle ADJUST_LEN_MAP_BITS.
2513 (avr_double_int_push_digit): New function.
2514 (avr_map, avr_revert_map, avr_swap_map, avr_id_map): New functions.
2515 (avr_sig_map, avr_map_hamming_byte): New functions.
2516 (avr_out_swap_bits, avr_out_revert_bits, avr_move_bits,
2517 avr_out_map_bits): New functions.
2518 (enum avr_builtin_id): Add AVR_BUILTIN_MAP8, AVR_BUILTIN_MAP16.
2519 (avr_init_builtins): Populate __builtin_avr_map8, __builtin_avr_map16.
2520 (bdesc_2arg): Add __builtin_avr_map8, __builtin_avr_map16 ...
2521 (avr_expand_builtin): ...and expand them.
2522 * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in defines:
2523 __BUILTIN_AVR_MAP8, __BUILTIN_AVR_MAP16.
2525 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2528 * config/mips/mips.c (mips_rtx_costs): Handle baddu.
2530 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2532 * config/mips/mips.c (mips16_unextended_reference_p): Test for BLKmode.
2534 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2536 * config/mips/mips-protos.h (mips_emit_binary): Declare.
2537 * config/mips/mips.c (mips_emit_binary): Make global.
2538 (mips_set_mips16_mode): Turn off -mfix-r4000 in MIPS16 mode.
2539 (mips_conditional_register_usage): Don't treat LO and HI as
2540 register operands in MIPS16 mode.
2541 (mips_mulsidi3_gen_fn): Use {u,}mulsidi3_{32,64}bit_mips16
2543 * config/mips/predicates.md (muldiv_target_operand): New predicate.
2544 (move_operand): Allow hilo_operand.
2545 * config/mips/mips.md (mul<mode>3): Explicitly specify LO as the
2546 target of MIPS16 multiplies, then move it into the target register.
2547 (mul<mode>3_internal, *macc2, *msac2): Use muldiv_target_operand.
2548 (<u>mulsidi3_32bit_mips16): New expander.
2549 (<u>mulsidi3_32bit): Use muldiv_target_operand.
2550 (<u>mulsidi3_32bit_r4000): Disable for ISA_HAS_DSP.
2551 (<u>mulsidi3_64bit): Require !TARGET_MIPS16. Split into
2552 <u>mulsidi3_64bit_split.
2553 (<u>mulsidi3_64bit_mips16): New expander.
2554 (<u>mulsidi3_64bit_split): Likewise, using expansions from
2555 two previous define_splits.
2556 (<u>mulsidi3_64bit_hilo, *muls<u>_di, <u>msubsidi4): Use
2557 muldiv_target_operand.
2558 (<su>mulsi3_highpart): Use <su>mulsi3_highpart_split for MIPS16 code.
2559 (<su>mulsi3_highpart_internal): Require !TARGET_MIPS16.
2560 Split into <su>mulsi3_highpart_split.
2561 (<su>mulsi3_highpart_split): New expander.
2562 (<su>muldi3_highpart): Turn into a define_expand.
2563 Use <su>muldi3_highpart_split for MIPS16 code.
2564 (<su>muldi3_highpart_internal): Renamed from <su>muldi3_highpart.
2565 Require !TARGET_MIPS16. Split into <su>muldi3_highpart_split.
2566 (<su>muldi3_highpart_split): New expander.
2567 (<u>mulditi3): Explicitly specify LO as the target of MIPS16
2568 multiplies, then move it into the target register.
2569 (<u>mulditi3_internal, <u>maddsidi4): Use muldiv_target_operand.
2570 (divmod<mode>4, udivmod<mode>4): Turn into define_expands.
2571 Use <u>divmod<mode>4_split for MIPS16 code, then explicitly
2572 move LO into operand 0.
2573 (divmod<mode>4_internal, udivmod<mode>4_internal): Renamed
2574 from <u>divmod<mode>4. Use muldiv_target_operand.
2575 Require !TARGET_MIPS16. Split into <u>divmod<mode>4_split.
2576 (<u>divmod<mode>4_split): New expander.
2577 (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): Use muldiv_target_operand.
2578 (mfhi<GPR:mode>_<HILO:mode>): Use hilo_operand.
2580 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2582 * hard-reg-set.h (target_hard_regs): Add x_accessible_reg_set
2583 and x_operand_reg_set.
2584 (accessible_reg_set, operand_reg_set): New macros.
2585 * reginfo.c (init_reg_sets): Initialize accessible_reg_set and
2587 (saved_accessible_reg_set, saved_operand_reg_set): New variables.
2588 (save_register_info): Save them.
2589 (restore_register_info): Restore them.
2590 (init_reg_sets_1): Limit operand_reg_set to accessible_reg_set.
2591 Remove NO_REGS registers from operand_reg_set. Treat members
2592 of operand_reg_set as fixed.
2593 * recog.c (general_operand): Check operand_reg_set rather than NO_REGS.
2594 (register_operand, nonmemory_operand): Likewise.
2595 * varasm.c (make_decl_rtl): Always use DECL_MODE as the mode of
2596 register variables. Check accessible_reg_set and operand_reg_set.
2597 * config/mips/mips.c (mips_conditional_register_usage): Remove
2598 inaccessible register from accessible_reg_set, rather than just
2601 2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
2603 * config/pa/pa-linux.h (TARGET_GAS): Remove comment.
2605 2011-11-26 Richard Henderson <rth@redhat.com>
2607 * config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs
2610 2011-11-26 Richard Henderson <rth@redhat.com>
2612 * optabs.c (expand_atomic_fetch_op): Always return result.
2614 * optabs.c (init_sync_libfuncs_1): Include max in iteration.
2616 * omp-low.c (expand_omp_atomic): Assume anything aligned to
2617 BIGGEST_ALIGNMENT is aligned.
2619 2011-11-26 Richard Henderson <rth@redhat.com>
2621 * config/m68k/m68k.md (UNSPECV_CAS_1, UNSPECV_CAS_2): New.
2622 (UNSPECV_TAS_1, UNSPECV_TAS_2): New.
2623 (I): New mode iterator.
2624 (xz): New mode attribute.
2625 * config/m68k/sync.md: New file.
2627 * config/m68k/linux.h (TARGET_INIT_LIBFUNCS): New.
2628 * config/m68k/m68k.c (m68k_init_sync_libfuncs): New.
2630 2011-11-26 Nathan Sidwell <nathan@acm.org>
2632 PR gcov-profile/51297
2633 * gcov.c (main): Allocate initial names and sources arrays.
2634 (find_source): Don't check for null name or source arrays here.
2636 2011-11-26 Jakub Jelinek <jakub@redhat.com>
2638 PR rtl-optimization/49912
2639 * cfgrtl.c (rtl_verify_flow_info_1): Ignore also EDGE_PRESERVE bit
2640 when counting n_branch.
2642 2011-11-26 Uros Bizjak <ubizjak@gmail.com>
2644 * config/i386/sync.md (movdi_via_fpu): Add %Z insn suffixes.
2646 2011-11-26 Joern Rennecke <joern.rennecke@embecosm.com>
2649 * calls.c (mem_overlaps_already_clobbered_arg_p):
2650 Return false if no outgoing arguments have been stored so far.
2652 2011-11-25 Georg-Johann Lay <avr@gjlay.de>
2654 * config/avr/avr.c (print_operand): Support code = 'i' for CONST_INT.
2656 2011-11-24 Andrew MacLeod <amacleod@redhat.com>
2659 * tree.h (is_builtin_name): No longer external.
2660 * builtins.c (is_builtin_name): Make static.
2661 * varasm.c (incorporeal_function_p): __sync and __atomic external calls
2662 are not incorporeal and may need asm label processing.
2664 2011-11-25 Georg-Johann Lay <avr@gjlay.de>
2667 * config/avr/avr-protos.h (avr_log_t): Add field .builtin.
2668 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2669 Don't bypass TARGET_ALL_DEBUG. Print self-info with ?.
2670 (avr_log_vadump): Support %D and %X to print double_int.
2671 (avr_double_int_pop_digit): New static function.
2672 (avr_dump_double_int_hex): New static function.
2674 2011-11-24 Enkovich Ilya <ilya.enkovich@intel.com>
2677 * config/i386/i386.c (distance_non_agu_define_in_bb): Fix insn
2680 2011-11-24 Andrew MacLeod <amacleod@redhat.com>
2682 * optab.c (maybe_emit_atomic_exchange): New. Try to emit an
2683 atomic_exchange pattern.
2684 (maybe_emit_sync_lock_test_and_set): New. Try to emit an exchange
2685 using __sync_lock_test_and_set.
2686 (maybe_emit_compare_and_swap_exchange_loop): New. Try to emit an
2687 exchange using a compare_and_swap loop.
2688 (expand_sync_lock_test_and_set): New. Expand sync_lock_test_and_set.
2689 (expand_atomic_test_and_set): New. Expand test_and_set operation.
2690 (expand_atomic_exchange): Use new maybe_emit_* functions.
2691 (expand_atomic_store): Use new maybe_emit_* functions.
2692 * builtins.c (expand_builtin_sync_lock_test_and_set): Call
2693 expand_sync_lock_test_and_set routine.
2694 (expand_builtin_atomic_exchange): Remove parameter from call.
2695 (expand_builtin_atomic_clear): Use atomic_clear pattern if present.
2696 (expand_builtin_atomic_test_and_set): Add target and simply call
2697 expand_atomic_test_and_set.
2698 (expand_builtin): Add target to expand_builtin_atomic_test_and_set.
2699 * expr.h (expand_atomic_exchange): Add parameter.
2700 (expand_sync_lock_test_and_set): New prototype.
2701 (expand_atomic_test_and_set, expand_atomic_clear): New prototypes.
2703 2011-11-24 H.J. Lu <hongjiu.lu@intel.com>
2706 * config/i386/i386.h (processor_costs): Revert revision 181357.
2707 * config/i386/i386.c (cost models): Likewise.
2708 (core_cost): Likewise.
2709 (promote_duplicated_reg): Likewise.
2710 (promote_duplicated_reg_to_size): Likewise.
2711 (processor_target): Likewise.
2712 (expand_set_or_movmem_via_loop_with_iter): Likewise.
2713 (expand_set_or_movmem_via_loop): Likewise.
2714 (emit_strset): Likewise.
2715 (expand_movmem_epilogue): Likewise.
2716 (expand_setmem_epilogue): Likewise.
2717 (expand_movmem_prologue): Likewise.
2718 (expand_setmem_prologue): Likewise.
2719 (expand_constant_movmem_prologue): Likewise.
2720 (expand_constant_setmem_prologue): Likewise.
2721 (decide_alg): Likewise.
2722 (decide_alignment): Likewise.
2723 (ix86_expand_movmem): Likewise.
2724 (ix86_expand_setmem): Likewise.
2725 (ix86_slow_unaligned_access): Likewise.
2726 * config/i386/i386.md (strset): Likewise.
2727 * config/i386/sse.md (vec_dupv4si): Likewise.
2728 (vec_dupv2di): Likewise.
2730 2011-11-24 Georg-Johann Lay <avr@gjlay.de>
2732 * config/avr/avr.md (*rotlhi2.15): Set length to 4.
2734 2011-11-24 Razya Ladelsky <razya@il.ibm.com>
2736 * tree-data-ref.c (initialize_data_dependence_relation): Update
2737 comment for the self dependence case.
2738 (compute_self_dependence): Remove.
2739 * tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to
2740 compute_self_dependenc.
2742 2011-11-24 Alan Modra <amodra@gmail.com>
2744 * c-decl.c (warn_if_shadowing): Don't warn if shadowed
2745 identifier is from system header.
2747 2011-11-23 Jakub Jelinek <jakub@redhat.com>
2750 * config/i386/i386.c (decide_alg): Initialize *dynamic_check
2753 2011-11-23 Vladimir Makarov <vmakarov@redhat.com>
2755 PR rtl-optimization/48455
2756 * doc/invoke.texi (-fira-region): Document default values.
2758 * flags-types.h (enum ira_region): Add new value
2759 IRA_REGION_AUTODETECT.
2761 * common.opt (fira-region): Set up initial value to
2762 IRA_REGION_AUTODETECT.
2764 * toplev.c (process_options): Set up flag_ira_region depending on
2767 * ira.c (ira.c): Remove optimize guard for ira_build.
2769 2011-11-23 Chung-Lin Tang <cltang@codesourcery.com>
2771 PR rtl-optimization/50496
2772 * jump.c (redirect_jump): Assert fail on nlabel == NULL_RTX
2773 only after epilogue is created. Add comments.
2775 2011-11-22 Richard Henderson <rth@redhat.com>
2777 * config/ia64/ia64.c (ia64_expand_atomic_op): Add model parameter.
2778 Generate the barrier required for the memory model.
2779 (rtx_needs_barrier): Handle UNSPEC_FETCHADD_REL, UNSPEC_CMPXCHG_REL.
2780 * config/ia64/ia64-protos.h: Update.
2781 * config/ia64/ia64.md (UNSPEC_FETCHADD_REL): New.
2782 (UNSPEC_CMPXCHG_REL): New.
2783 * config/ia64/sync.md (mem_thread_fence): New.
2784 (atomic_load<IMODE>, atomic_store<IMODE>): New.
2785 (atomic_compare_and_swap<IMODE>): New.
2786 (cmpxchg_acq_<I124MODE>, cmpxchg_acq_di): New.
2787 (atomic_exchange<IMODE>): New.
2788 (xchg_acq_<IMODE>): Rename from sync_lock_test_and_set<IMODE>.
2789 (atomic_<FETCHOP><IMODE>, atomic_nand<IMODE>): New.
2790 (atomic_fetch_<FETCHOP><IMODE>, atomic_fetch_nand<IMODE>): New.
2791 (atomic_<FETCHOP>_fetch<IMODE>, atomic_nand_fetch<IMODE>): New.
2792 (fetchadd_rel_<I48MODE>): New.
2793 (sync_<FETCHOP><IMODE>, sync_nand<IMODE>): Remove.
2794 (sync_old_<FETCHOP><IMODE>, sync_old_nand<IMODE>): Remove.
2795 (sync_new_<FETCHOP><IMODE>, sync_new_nand<IMODE>): Remove.
2796 (sync_compare_and_swap<IMODE>): Remove.
2797 (sync_lock_release<IMODE>): Remove.
2799 * config/ia64/ia64.md: Use define_c_enum for UNSPEC_*
2800 and UNSPECV_* constants.
2802 2011-11-22 Tom de Vries <tom@codesourcery.com>
2804 PR rtl-optimization/50764
2805 * sched-deps.c (sched_analyze_insn): Make sure frame-related insns are
2806 not moved past preceding jump.
2808 2011-11-22 Jeff Law <law@redhat.com>
2810 * doc/contrib.texi: Add entry for David Binderman.
2812 2011-11-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2814 * postreload.c (reload_combine): Mark reg_state as invalid at
2815 volatile insns if there has been a use already.
2817 2011-11-21 Aldy Hernandez <aldyh@redhat.com>
2819 * opts.c (finish_options): Do not fail for -fgnu-tm.
2820 * gimple-streamer-out.c (output_gimple_stmt): Handle
2822 * gimple-streamer-in.c (input_gimple_stmt): Same.
2823 * lto-cgraph.c (input_overwrite_node): Read tm_clone bit.
2824 (lto_output_node): Write tm_clone bit.
2826 2011-11-22 Ian Lance Taylor <iant@google.com>
2828 * doc/install.texi (Configuration): Correct doc of
2829 --enable-build-poststage1-with-cxx: it is not experimental.
2831 2011-11-22 Jakub Jelinek <jakub@redhat.com>
2833 PR tree-optimization/51074
2834 * fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
2835 handling for BYTES_BIG_ENDIAN.
2836 * optabs.c (can_vec_perm_for_code_p): Likewise.
2838 2011-11-22 Michael Matz <matz@suse.de>
2841 * trans-mem.c (expand_block_tm): Ignore clobbers.
2843 2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
2845 * config/darwin.h (ENDFILE_SPEC): New.
2846 (DARWIN_CRT1_SPEC): Add crttms.o.
2847 (STARTFILE_SPEC): Likewise for dynamic libs and bundles.
2848 * config/i386.h (ENDFILE_SPEC): Amend to include crttme.o.
2850 2011-11-22 Michael Matz <matz@suse.de>
2853 * tree.c (iterative_hash_expr): Remove break after return.
2855 2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
2857 * target.def (tm_clone_table_section): New hook.
2858 * doc/tm.texi.in (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define.
2859 * doc/tm.texi: Regenerate.
2860 * varasm.c (dump_tm_clone_pairs): Use target tm_clone_table_section.
2861 * output.h (default_clone_table_section): New prototype.
2862 * config/darwin.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): New.
2863 * config/darwin-protos.h (darwin_tm_clone_table_section): New prototype.
2864 * config/darwin.c (darwin_tm_clone_table_section): New.
2866 2011-11-21 Torvald Riegel <triegel@redhat.com>
2868 * trans-mem.c (diagnose_tm_1): Print an expression instead of a
2869 declaration in error messages for indirect calls.
2871 2011-11-21 David S. Miller <davem@davemloft.net>
2873 * config/sparc/sparc.c (sparc_regmode_natural_size): New function
2874 implementing REGMODE_NATURAL_SIZE taking into consideration vector
2876 (sparc_modes_tieable_p): Similarly for MODES_TIEABLE_P.
2877 * config/sparc/sparc-protos.h (sparc_regmode_natural_size,
2878 sparc_modes_tieable_p): Declare.
2879 * gcc/config/sparc/sparc.h (REGMODE_NATURAL_SIZE,
2880 MODES_TIEABLE_P): Use new helper functions.
2883 2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2886 * expmed.c (store_bit_field_1): Use extract_bit_field on big
2887 endian targets if the source cannot be exactly covered by word
2890 2011-11-21 Jakub Jelinek <jakub@redhat.com>
2893 * var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP
2894 macro instead of XEXP.
2896 2011-11-21 Andreas Tobler <andreast@fgznet.ch>
2898 * configure: Regenerate.
2900 2011-11-21 Georg-Johann Lay <avr@gjlay.de>
2902 * config/avr/avr.c (output_reload_in_const): Loading a byte with 0
2903 must not affect cc0.
2904 * config/avr/avr.md (*movhi, *movpsi, *movsi, *movsf): Zero to any
2905 register does not change cc0. Same for any constant to ld-register.
2907 2011-11-21 Uros Bizjak <ubizjak@gmail.com>
2909 * config/i386/mmx.md (unspec) <UNSPEC_MOVNTQ, UNSPEC_PFRCP,
2910 UNSPEC_PFRCPIT1, UNSPEC_PFRCPIT2, UNSPEC_PFRSQRT, UNSPEC_PFRSQIT1>:
2911 Move from config/i386/i386.md
2912 (unspecv) <UNSPECV_EMMS, UNSPECV_FEMMS>: Ditto.
2913 * config/i386/sse.md (unspec) <UNSPEC_MOVNT,UNSPEC_MOVU, UNSPEC_LDDQU,
2914 UNSPEC_PSHUFB, UNSPEC_PSIGN, UNSPEC_PALIGNR, UNSPEC_EXTRQI,
2915 UNSPEC_EXTRQ, UNSPEC_INSERTQI, UNSPEC_INSERTQ, UNSPEC_BLENDV,
2916 UNSPEC_INSERTPS, UNSPEC_DP, UNSPEC_MOVNTDQA, UNSPEC_MPSADBW,
2917 UNSPEC_PHMINPOSUW, UNSPEC_PTEST, UNSPEC_PCMPESTR, UNSPEC_PCMPISTR,
2918 UNSPEC_FMADDSUB, UNSPEC_XOP_UNSIGNED_CMP, UNSPEC_XOP_TRUEFALSE,
2919 UNSPEC_XOP_PERMUTE, UNSPEC_FRCZ, UNSPEC_AESENC, UNSPEC_AESENCLAST,
2920 UNSPEC_AESDEC, UNSPEC_AESDECLAST, UNSPEC_AESIMC,
2921 UNSPEC_AESKEYGENASSIST, UNSPEC_PCLMUL, UNSPEC_PCMP, UNSPEC_VPERMIL,
2922 UNSPEC_VPERMIL2, UNSPEC_VPERMIL2F128, UNSPEC_CAST, UNSPEC_VTESTP,
2923 UNSPEC_VCVTPH2PS, UNSPEC_VCVTPS2PH, UNSPEC_VPERMSI, UNSPEC_VPERMDF,
2924 UNSPEC_VPERMSF, UNSPEC_VPERMTI, UNSPEC_GATHER, UNSPEC_VSIBADDR>: Ditto.
2925 (unspecv) <UNSPECV_LDMXCSR, UNSPECV_STMXCSR, UNSPECV_CLFLUSH,
2926 UNSPECV_MONITOR, UNSPECV_MWAIT, UNSPECV_VZEROALL, UNSPECV_VZEROUPPER>:
2928 * config/i386/sync.md (unspec) <UNSPEC_LFENCE, UNSPEC_SFENCE,
2929 UNSPEC_MFENCE, UNSPEC_MOVA>: Ditto.
2930 (unspecv) <UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2, UNSPECV_CMPXCHG_3,
2931 UNSPECV_CMPXCHG_4, UNSPECV_XCHG, UNSPECV_LOCK>: Ditto.
2932 (sse2_lfence): Move from config/i386/sse.md.
2933 (*sse2_lfence): Ditto.
2934 (sse_sfence): Ditto.
2935 (*sse_sfence): Ditto.
2936 (sse2_mfence): Ditto.
2937 (mfence_sse2): Ditto. Rename from *sse2_mfence. Enable also
2939 (mem_thread_fence): Use mfence_sse2.
2941 2011-11-21 Georg-Johann Lay <avr@gjlay.de>
2943 * config/avr/avr.h (struct base_arch_s): Add field sfr_offset.
2944 * config/avr/avr-devices.c: Ditto. And initialize it.
2945 * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define
2947 * config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove.
2948 (out_movhi_r_mr, out_movhi_mr_r): Remove.
2949 (out_movsi_r_mr, out_movsi_mr_r): Remove.
2950 * config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20.
2951 (*insv.io, *insv.not.io): Ditto.
2952 * config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static.
2953 (print_operand): Implement "%i" to print address as I/O address.
2954 (output_movqi): Clean up call of out_movqi_mr_r.
2955 (output_movhi): Clean up call of out_movhi_mr_r.
2956 (avr_file_start): Use avr_current_arch->sfr_offset instead of
2957 magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1.
2958 (avr_out_sbxx_branch): Use %i instead of %m-0x20.
2959 (out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static.
2960 (out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len.
2961 (out_shift_with_cnt): Clean up code: Use avr_asm_len.
2962 (output_movsisf): Use output_reload_insisf for all CONSTANT_P sources.
2963 (avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources.
2964 Clean up call of avr_out_store_psi.
2965 (output_reload_in_const): Don't cut symbols longer than 2 bytes.
2966 (output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to
2967 try if setting pre-cleared register is advantageous.
2968 (avr_out_plus_1): Use gen_int_mode instead of GEN_INT.
2970 2011-11-20 Joey Ye <joey.ye@arm.com>
2972 * expr.c (expand_expr_real_1): Correctly handle strict volatile
2973 bitfield loads smaller than mode size.
2975 2011-11-20 Richard Henderson <rth@redhat.com>
2977 * config/mips/mips.c (mips_init_libfuncs): Call init_sync_libfuncs.
2979 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
2982 * config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
2983 patterns for supported mode only.
2986 * config/i386/i386.c (ix86_expand_builtin)
2987 <IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.
2989 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
2991 * config/i386/i386.md (UNSPEC_MOVNTI): Remove.
2992 (UNSPEC_MOVNTQ): New unspec.
2993 * config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
2994 Use UNSPEC_MOVNTQ instead of UNSPEC_MOVNT.
2995 * config/i386/sse.md (sse2_movnti<mode>): Use UNSPEC_MOVNT instead of
2997 (STORENT_MODE): Add DI and V4DI modes.
2999 2011-11-20 Nathan Sidwell <nathan@acm.org>
3001 PR gcov-profile/51113
3002 * coverage.c (build_var): Propagate visibility for public
3003 decls. Use make_decl_one_only for PIC correctness.
3006 * gcc.misc-tests/gcov-13.c: Check gcovpart-13b coverage
3007 * gcc.misc-tests/gcov-16.c: New.
3008 * gcc.misc-tests/gcov-17.c: New.
3009 * g++.dg/gcov/gcov-8.C: New.
3010 * g++.dg/gcov/gcov-9.C: New.
3011 * g++.dg/gcov/gcov-10.C: New.
3013 2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
3015 PR rtl-optimization/51187
3016 * reorg.c (relax_delay_slots): Do not consider a jump useless if there
3017 is a barrier between the jump and its target label.
3019 2011-11-19 Patrick Marlier <patrick.marlier@gmail.com>
3022 * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.
3024 2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
3026 * expmed.c (store_bit_field_1): Revert bogus formatting change.
3028 2011-11-19 Richard Earnshaw <rearnsha@arm.com>
3031 * config/arm/arm.c (neon_disambiguate_copy): Correctly handle partial
3032 overlap of src and dest operands.
3034 2011-11-19 Iain Sandoe <iains@gcc.gnu.org>
3036 * config/darwin.h (ASM_DEBUG_SPEC): New.
3037 * config/darwin9.h (ASM_DEBUG_SPEC): New.
3039 2011-11-18 Jan Hubicka <jh@suse.cz>
3041 * config/i386/i386.c (atom_cost): Disable SSE loop until alignment
3044 2011-11-18 Anatoly Sokolov <aesok@post.ru>
3046 * config/cris/cris.c (cris_function_value_regno_p): Make static.
3047 (TARGET_FUNCTION_VALUE_REGNO_P): Define.
3048 * config/cris/cris.h (FUNCTION_VALUE_REGNO_P): Remove.
3049 * config/cris/cris-protos.h (cris_function_value_regno_p): Remove.
3051 2011-11-18 H.J. Lu <hongjiu.lu@intel.com>
3054 * doc/extend.texi: Document __builtin_ia32_movnti64.
3056 * config/i386/emmintrin.h (_mm_stream_si64): New.
3058 * config/i386/i386-builtin-types.def: Add VOID_FTYPE_PLONGLONG_LONGLONG.
3060 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTI64.
3061 (bdesc_special_args): Update __builtin_ia32_movnti. Add
3062 __builtin_ia32_movnti64.
3063 (ix86_expand_special_args_builtin): Handle
3064 VOID_FTYPE_PLONGLONG_LONGLONG.
3066 * config/i386/i386.md (UNSPEC_MOVNTI): New.
3068 * config/i386/sse.md (sse2_movntsi): Renamed to ...
3069 (sse2_movnti<mode>): This.
3071 2011-11-18 Georg-Johann Lay <avr@gjlay.de>
3074 * config/avr/avr.h (base_arch_s): Add field n_segments.
3075 (ADDR_SPACE_PGM1, ADDR_SPACE_PGM2, ADDR_SPACE_PGM3,
3076 ADDR_SPACE_PGM4, ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): New address spaces.
3077 (AVR_HAVE_ELPM, AVR_HAVE_ELPMX): New defines.
3078 (INIT_EXPANDERS): New define.
3079 * config/avr/avr-protos.h (avr_mem_pgmx_p): New.
3080 (avr_init_expanders): New.
3081 (avr_emit_movmemhi, avr_out_movmem): New.
3082 (avr_xload_libgcc_p): New.
3083 * config/avr/avr-c.c (avr_register_target_pragmas): Register
3084 address spaces __pgm1, __pgm2, __pgm3, __pgm4 __pgm5, __pgmx.
3085 (avr_cpu_cpp_builtins): Add built-in defines __PGM1,
3086 __PGM2, __PGM3, __PGM4, __PGM5, __PGMX.
3087 * config/avr/avr-devices.c (avr_arch_types): Set field n_segments.
3089 * config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
3090 3 bits instead of just 1.
3091 (xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
3092 (progmem_section): Change from section to array of sections.
3093 (progmem_section_prefix): New static variable.
3094 (avr_file_start): Print set for __RAMPZ__
3095 (avr_option_override): Move initialization of RTXes from here...
3096 (avr_init_expanders): ...to this new function.
3097 (avr_pgm_segment): New static function.
3098 (avr_decl_pgm_p): Handle error_mark_node.
3099 (avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
3100 (avr_out_xload, avr_find_unused_d_reg): New static functions.
3101 (expand_prologue, expand_epilogue): Use rampz_rtx.
3102 (print_operand): Hande CONST_STRING.
3103 (avr_xload_libgcc_p): New static function.
3104 (avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
3105 (avr_progmem_p): Return 2 for 24-bit flash address space.
3106 (avr_out_sbxx_branch): Clean-up code from ASn macros.
3107 (out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
3108 address and print symbolically.
3109 (avr_asm_named_section, avr_section_type_flags,
3110 avr_encode_section_info, avr_asm_select_section,
3111 avr_addr_space_address_mode, avr_addr_space_pointer_mode,
3112 avr_addr_space_legitimate_address_p, avr_addr_space_convert,
3113 avr_addr_space_legitimize_address): Handle new address spaces.
3114 (avr_output_progmem_section_asm_op): New static function.
3115 (avr_asm_init_sections): Initialize progmem_section[].
3116 (adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
3117 (avr_const_address_lo16): New static function.
3118 (avr_assemble_integer): Use it to handle 3-byte integers.
3119 (avr_emit_movmemhi, avr_out_movmem): New functions.
3121 * config/avr/predicates.md (nox_general_operand): Handle new
3123 * config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
3124 (adjust_len): Add xload, movmem.
3125 (SP_ADDR): New define_constants.
3126 (isa): Add "lpm", "lpmx", "elpm", "elpmx".
3127 (enabled): Handle them.
3128 (load<mode>_libgcc): New expander.
3129 (*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
3130 (xload8_A, xload<mode>_A): New insn-and-splits.
3131 (xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
3132 (mov<mode>): Handle new address spaces.
3133 (movmemhi): Rewrite using avr_emit_movmemhi.
3134 (MOVMEM_r_d): New mode attribute.
3135 (movmem_<mode>, movmem_qi_elpm): New insns.
3136 (setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
3137 C-code. Use label instead of hard-coded instrunction lengths.
3139 2011-11-18 Martin Jambor <mjambor@suse.cz>
3141 PR tree-optimization/50605
3142 * gimple.c (is_gimple_ip_invariant_address): Also handle MEM_REFs
3143 of IPA invariant decls.
3145 2011-11-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
3147 * tree-outof-ssa.c (insert_back_edge_copies): Add call to
3148 mark_dfs_back_edges.
3150 2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
3153 * configure.ac: Remove ranlib special-casing for Darwin.
3154 * configure: Regenerate.
3156 2011-11-18 Uros Bizjak <ubizjak@gmail.com>
3158 PR tree-optimization/51118
3159 * fold-const.c (fold_checksum_tree): Check for TS_TYPED structure
3160 before using TREE_TYPE accessor on expr.
3162 2011-11-17 Jan Hubicka <jh@suse.cz>
3165 * i386.c (atom_cost): Fix 32bit memset description.
3166 (expand_set_or_movmem_via_loop_with_iter): Output proper bounds check
3168 (expand_movmem_epilogue): Handle epilogues up to size 15 w/o producing
3170 (decide_alg): sse_loop is not useable wthen SSE2 is disabled;
3171 when not optimizing always use rep movsb or lincall; do not produce
3172 word sized loops when optimizing memset for size (to avoid need
3173 for large constants).
3174 (ix86_expand_movmem): Get into sync with ix86_expand_setmem;
3175 choose unroll factors better; always do 128bit moves when producing
3176 SSE loops; do not produce loopy epilogue when size is too small.
3177 (promote_duplicated_reg_to_size): Do not look into desired alignments
3178 when doing vector expansion.
3179 (ix86_expand_setmem): Track better when promoted value is available;
3180 choose unroll factors more sanely. Output loopy epilogue only
3183 2011-11-17 Steve Ellcey <sje@cup.hp.com>
3186 * output.h (fprint_w): Remove.
3187 * final.c (fprint_w): Remove.
3188 (output_addr_const): Change fprint_w back to fprintf.
3190 2011-11-17 Andrew Pinski <apinski@cavium.com>
3192 * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for MIPS.
3194 2011-11-17 Andrew MacLeod <amacleod@redhat.com>
3196 * builtins.c (expand_builtin): Remove 4th parameter representing
3197 weak/strong mode when __atomic_compare_exchange becomes a library call.
3199 2011-11-17 Richard Henderson <rth@redhat.com>
3201 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
3202 new pseudo for target after convert_modes.
3203 (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
3205 2011-11-17 Richard Henderson <rth@redhat.com>
3207 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
3208 new pseudo for target after convert_modes.
3209 (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
3211 2011-11-17 Richard Henderson <rth@redhat.com>
3213 * builtins.c (expand_builtin_mem_thread_fence): Remove.
3214 (expand_builtin_mem_signal_fence): Remove.
3215 (expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.
3216 (expand_builtin_sync_synchronize): Likewise.
3217 (expand_builtin_atomic_signal_fence): Use expand_mem_signal_fence.
3218 * optabs.c (expand_asm_memory_barrier): Split out from
3219 expand_builtin_mem_signal_fence.
3220 (expand_mem_thread_fence): New, a combination of code from
3221 expand_builtin_mem_thread_fence and expand_builtin_sync_synchronize.
3222 (expand_mem_signal_fence): Moved and renamed from
3223 expand_builtin_mem_signal_fence.
3224 (expand_atomic_exchange): Use expand_mem_thread_fence.
3225 (expand_atomic_load, expand_atomic_store): Likewise.
3226 * expr.h, optabs.h: Update decls.
3228 2011-11-17 Bin Cheng <bin.cheng@arm.com>
3230 PR rtl-optimization/50663
3231 * cprop.c (implicit_set_indexes): New global variable.
3232 (insert_set_in_table): Add additional parameter and record implicit
3234 (hash_scan_set): Add additional parameter and pass it to above.
3235 (hash_scan_insn): Pass false to hash_scan_set.
3236 (compute_hash_table_work): Pass true to hash_scan_set.
3237 (compute_cprop_data): Add implicit set to AVIN of block which the
3238 implicit set is recorded for.
3239 (one_cprop_pass): Handle implicit_set_indexes array.
3241 2011-11-17 Michael Matz <matz@suse.de>
3245 * tree-ssa-live.c (mark_all_vars_used_1): Recurse only for decls of
3247 (remove_unused_locals): Ditto.
3249 2011-11-16 Richard Henderson <rth@redhat.com>
3251 * config/alpha/alpha.c (alpha_split_compare_and_swap_12): Copy
3252 ALIAS_SET_MEMORY_BARRIER when creating a new memory.
3253 (alpha_split_atomic_exchange_12): Likewise.
3254 * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Likewise.
3256 2011-11-16 Joseph Myers <joseph@codesourcery.com>
3258 * config/i386/i386elf.h (PREFERRED_DEBUGGING_TYPE): Remove.
3260 2011-11-16 David Edelsohn <dje.gcc@gmail.com>
3262 * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags):
3263 Default to minimum alignment if decl is NULL.
3265 2011-11-16 Uros Bizjak <ubizjak@gmail.com>
3267 * config/i386/sse.md (round<mode>2_vec_pack_sfix): Optimize V2DFmode
3269 (<sse4_1>_round<ssemodesuffix>_vec_pack_sfix<avxsizesuffix>): Ditto.
3271 2011-11-16 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
3273 * doc/invoke.texi: Document AMD bdver1 and btver1.
3275 2011-11-16 Richard Earnshaw <rearnsha@arm.com>
3276 Bernd Schmidt <bernds@coudesourcery.com>
3277 Sebastian Huber <sebastian.huber@embedded-brains.de>
3280 * config/arm/arm.c (store_multiple_sequence): Avoid cases where
3281 the base reg is stored iff compiling for Thumb1.
3283 2011-11-16 Razya Ladelsky <razya@il.ibm.com>
3285 PR tree-optimization/49960
3286 * tree-data-ref.c (initialize_data_dependence_relation): Add
3288 Remove call to compute_self_dependence.
3289 (compute_affine_dependence): Remove the !DDR_SELF_REFERENCE condition.
3290 (compute_self_dependence): Remove old code. Add call to
3291 compute_affine_dependence.
3292 (compute_all_dependences): Remove call to compute_self_dependence.
3293 Add call to compute_affine_dependence.
3295 2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3298 * expmed.c (store_bit_field_1): Use extract_bit_field on big
3299 endian targets if the source cannot be exactly covered by word
3302 2011-11-15 Joseph Myers <joseph@codesourcery.com>
3304 * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Change STRING_LIMIT to
3307 2011-11-15 Richard Henderson <rth@redhat.com>
3309 * config/alpha/alpha.c (alpha_pre_atomic_barrier): New.
3310 (alpha_post_atomic_barrier): New.
3311 (alpha_split_atomic_op): New memmodel argument; honor it.
3312 (alpha_split_compare_and_swap): Take array of operands. Honor
3313 memmodel; always set bool output
3314 (alpha_expand_compare_and_swap_12): Similarly.
3315 (alpha_split_compare_and_swap_12): Similarly.
3316 (alpha_split_atomic_exchange): Similarly. Rename from
3317 alpha_split_lock_test_and_set.
3318 (alpha_expand_atomic_exchange_12): Similarly. Rename from
3319 alpha_expand_lock_test_and_set_12.
3320 (alpha_split_atomic_exchange_12): Similarly. Rename from
3321 alpha_split_lock_test_and_set_12.
3322 * config/alpha/alpha-protos.h: Update.
3323 * config/alpha/alpha.md (UNSPECV_CMPXCHG): New.
3324 * config/alpha/constraints.md ("w"): New.
3325 * config/alpha/predicates.md (mem_noofs_operand): New.
3326 * config/alpha/sync.md (atomic_compare_and_swap<mode>): Rename from
3327 sync_compare_and_swap<mode>; add the new parameters.
3328 (atomic_exchange<mode>): Update from sync_test_and_set<mode>.
3329 (atomic_fetch_<op><mode>): Update from sync_old_<op><mode>.
3330 (atomic_<op>_fetch<mode>): Update from sync_new_<op><mode>.
3331 (atomic_<op><mode>): Update from sync_<op><mode>.
3333 2011-11-16 Tom de Vries <tom@codesourcery.com>
3335 * tree-ssa-tail-merge.c (replace_block_by): Add frequency of bb2 to bb1.
3337 2011-11-16 Alan Modra <amodra@gmail.com>
3339 PR rtl-optimization/51051
3341 * function.c (thread_prologue_and_epilogue_insns): Guard
3342 emitting return with single_succ_p test.
3344 2011-11-15 Joern Rennecke <joern.rennecke@embecosm.com>
3346 * config/epiphany/epiphany.md (mov<mode>cc): Fix code to
3347 get mode from CMP_OP1 if CMP_OP0 is VOIDmode.
3349 2011-11-15 Uros Bizjak <ubizjak@gmail.com>
3351 * config/i386/sse.md (vec_pack_trunc_v2df): Optimize sequence for AVX.
3352 (vec_pack_sfix_trunc_v2df): Ditto.
3353 (vec_pack_sfix_v2df): Ditto.
3354 (vec_pack_sfix_trunc_v4df): Generate fix_truncv4dfv4si2 and
3355 avx_vec_concatv8si patterns.
3356 (vec_pack_sfix_v4df): Generate avx_cvtpd2dq256 and
3357 avx_vec_concatv8si patterns.
3359 2011-11-15 Torvald Riegel <triegel@redhat.com>
3361 * c-parser.c (c_parser_transaction_expression): Require parentheses
3362 when parsing transaction expressions.
3364 2011-11-15 Tristan Gingold <gingold@adacore.com>
3366 * incpath.c (get_added_cpp_dirs): New function.
3367 * incpath.h (get_added_cpp_dirs): Declare.
3368 * config/vms/vms-c.c (vms_c_register_includes): New function.
3369 (vms_std_modules): New variable.
3370 * config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define.
3371 (vms_c_register_includes): Declare.
3373 2011-11-15 Tristan Gingold <gingold@adacore.com>
3375 * c-family/c-pragma.h (pragma_extern_prefix): Declare.
3376 * c-family/c-pragma.c (pragma_extern_prefix): Make it public.
3377 * config/vms/vms-c.c (saved_extern_prefix): New variable.
3378 (vms_pragma_extern_prefix): New function.
3379 (vms_c_register_pragma): Register vms_pragma_extern_prefix.
3381 2011-11-15 Georg-Johann Lay <avr@gjlay.de>
3384 * config/avr/avr.h (ADDR_SPACE_PGM): New address spaces.
3385 (REGISTER_TARGET_PRAGMAS): New define.
3386 * config/avr/avr-protos.h (avr_mem_pgm_p): New.
3387 (avr_load_libgcc_p): New.
3388 (avr_register_target_pragmas): New.
3389 (asm_output_external_libcall): Remove.
3390 (avr_log_t): Add field "progmem". Order alphabetically.
3391 * config/avr/avr-log.c (avr_log_set_avr_log): Set avr_log.progmem.
3392 * config/avr/avr-c.c (langhooks.h): New include.
3393 (avr_register_target_pragmas): New function. Register address
3395 (avr_cpu_cpp_builtins): Add built-in define __PGM.
3397 * config/avr/avr.c: Include "c-family/c-common.h".
3398 (TARGET_LEGITIMATE_ADDRESS_P): Remove define.
3399 (TARGET_LEGITIMIZE_ADDRESS): Remove define.
3400 (TARGET_ADDR_SPACE_SUBSET_P): Define to...
3401 (avr_addr_space_subset_p): ...this new static function.
3402 (TARGET_ADDR_SPACE_CONVERT): Define to...
3403 (avr_addr_space_convert): ...this new static function.
3404 (TARGET_ADDR_SPACE_ADDRESS_MODE): Define to...
3405 (avr_addr_space_address_mode): ...this new static function.
3406 (TARGET_ADDR_SPACE_POINTER_MODE): Define to...
3407 (avr_addr_space_pointer_mode): ...this new static function.
3408 (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define to...
3409 (avr_addr_space_legitimate_address_p): ...this new static function.
3410 (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Define to...
3411 (avr_addr_space_legitimize_address): ...this new static function.
3412 (avr_mode_code_base_reg_class): Handle address spaces.
3413 (avr_regno_mode_code_ok_for_base_p): Ditto.
3414 (lpm_addr_reg_rtx, lpm_reg_rtx, all_regs_rtx): New static variables.
3415 (avr_option_override): Initialize them.
3416 (output_reload_in_const): Use all_regs_rtx. Fix signedness of loop
3418 (avr_pgm_segment): New static function.
3419 (avr_decl_pgm_p, avr_mem_pgm_p): New static functions.
3420 (avr_out_lpm, avr_out_lpm_no_lpmx): New static functions.
3421 (output_movqi, output_movhi, output_movsisf, avr_out_movpsi): Call
3422 avr_out_lpm to handle loads from progmem.
3423 (avr_load_libgcc_p): New static function.
3424 (avr_progmem_p): Test if decl is in flash.
3425 (avr_pgm_pointer_const_p): New static function.
3426 (avr_nonconst_pointer_addrspace): New static function.
3427 (avr_pgm_check_var_decl): New static function.
3428 (avr_insert_attributes): Use it. Change error message to report
3429 cause (progmem or address space) when code wants to write to flash.
3430 (avr_section_type_flags): Unset section flag SECTION_BSS for
3433 * config/avr/predicates.md (nop_general_operand): New predicate.
3434 (nox_general_operand): New predicate.
3435 * config/avr/avr.md (LPM_REGNO): New define_constant.
3436 (load<mode>_libgcc): New expander.
3437 (*load.<mode>.libgcc): New insn.
3438 (mov<mode>): Handle loads from non-generic AS.
3439 (movmemhi): Ditto. Propagate address space information to newly
3441 (movqi_insn, *movhi, *movpsi, *movsi, *movsf): Change predicate #1
3442 to nox_general_operand.
3443 (ashrqi3, ashrhi3, ashrsi3): Change predicate #1 to
3444 nop_general_operand.
3445 (ashlqi3, *ashlqi3, ashlhi3, ashlsi3): Ditto.
3446 (lshrqi3, *lshrqi3, lshrhi3, lshrsi3): Ditto.
3447 (split-lpmx): New split.
3448 (*ashlhi3_const, *ashlsi3_const, *ashrhi3_const, *ashrsi3_const,
3449 *lshrhi3_const, *lshrsi3_const): Indent, unquote C.
3451 2011-11-15 Maxim Kuvyrkov <maxim@codesourcery.com>
3453 * ipa-cp.c (ipa_value_from_jfunc): Make global.