1 2011-12-21 Jakub Jelinek <jakub@redhat.com>
3 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Initialize
4 *op0 and *op1 to NULL_TREE first to avoid warnings.
5 * calls.c (initialize_argument_information): Initialize base to avoid
10 * tree-eh.c (decide_copy_try_finally): At -O0, return true
11 even when ndests is not 1, if there are only gimple_clobber_p
12 (or debug) stmts in the finally sequence.
13 * tree-inline.c (estimate_num_insns): Return 0 for gimple_clobber_p
16 2011-12-21 Aldy Hernandez <aldyh@redhat.com>
19 * trans-mem.c (tm_log_add): Use create_tmp_var_reg.
21 2011-12-21 Martin Jambor <mjambor@suse.cz>
23 * tree-into-ssa.c (rewrite_update_stmt): Do not dump extra newlines.
24 (rewrite_update_enter_block): Likewise.
25 (dump_update_ssa): Likewise.
26 (update_ssa): Likewise but also dump a newline at the beginning.
28 2011-12-21 Enkovich Ilya <ilya.enkovich@intel.com>
31 * implicit-zee.c: Delete.
33 * Makefile.in: Replace implicit-zee.c with ree.c.
34 * config/i386/i386.c (ix86_option_override_internal): Rename
36 * common.opt (fzee): Ignored.
38 * passes.c (init_optimization_passes): Replace pass_implicit_zee
40 * tree-pass.h (pass_implicit_zee): Delete.
42 * timevar.def (TV_ZEE): Delete.
44 * doc/invoke.texi: Add -free description.
46 2011-12-21 Tristan Gingold <gingold@adacore.com>
48 * config/vms/vms-protos.h (vms_function_section): New prototype.
49 * config/vms/vms.c (vms_function_section): New function.
50 * config/vms/vms.h (TARGET_ASM_FUNCTION_SECTION): Define.
52 2011-12-21 Richard Guenther <rguenther@suse.de>
55 * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
56 mode of the pseudo as destination mode. Only assert that
57 is equal to the promoted mode of the decl if it is a REG.
59 2011-12-21 Tristan Gingold <gingold@adacore.com>
61 * config/vms/xm-vms.h (STANDARD_EXEC_PREFIX): Remove define.
63 2011-12-20 Richard Henderson <rth@redhat.com>
65 * config/ia64/ia64.c (MAX_VECT_LEN): New.
66 (struct expand_vec_perm_d): New.
67 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
68 (ia64_unpack_assemble): Use ia64_expand_vec_perm_const_1.
69 (expand_vselect, expand_vselect_vconcat): New.
70 (expand_vec_perm_identity, expand_vec_perm_shrp): New.
71 (expand_vec_perm_1, expand_vec_perm_broadcast): New.
72 (expand_vec_perm_interleave_2, expand_vec_perm_v4hi_5): New.
73 (ia64_expand_vec_perm_const_1, ia64_expand_vec_perm_const): New.
74 (ia64_vectorize_vec_perm_const_ok): New.
75 (ia64_expand_vec_setv2sf, ia64_expand_vec_perm_even_odd): New.
76 * config/ia64/ia64-protos.h: Update.
77 * config/ia64/vect.md (VEC): New mode iterator.
78 (vecint): New mode attribute.
79 (vec_interleave_lowv8qi, vec_interleave_highv8qi): Privatize with '*'.
80 (vec_interleave_lowv4hi, vec_interleave_highv4hi): Likewise.
81 (vec_interleave_lowv2si, vec_interleave_highv2si): Likewise.
82 (vec_interleave_lowv2sf, vec_interleave_highv2sf): Likewise.
83 (mix1_even, mix1_odd, mux1_alt): Likewise.
84 (mux1_brcst_qi): Remove '*' from name.
85 (vec_extract_evenv8qi, vec_extract_oddv8qi): Remove.
86 (vec_extract_evenv4hi, vec_extract_oddv4hi): Remove.
87 (vec_extract_evenv2si, vec_extract_oddv2si): Remove.
88 (vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
89 (vec_extract_evenodd_helper): Remove.
90 (vec_setv2sf): Use ia64_expand_vec_setv2sf.
91 (vec_pack_trunc_v4hi): Use ia64_expand_vec_perm_even_odd.
92 (vec_pack_trunc_v2si): Likewise.
93 (vec_perm_const<VEC>): New.
95 2011-12-20 Richard Henderson <rth@redhat.com>
97 * tree-vect-generic.c (expand_vector_operations_1): Correct tests
98 for vector types -- use the type not the mode. Fix optab selection
99 for vector shifts by a scalar. Handle over-large integer modes
102 2011-12-20 Richard Henderson <rth@redhat.com>
104 * config/arm/arm.md (*arm_xorsi3): Match iorsi3 and perform
105 post-reload splitting.
107 * config/arm/arm.md (*arm_cmpdi_unsigned): Enable for thumb2.
108 * config/arm/arm.c (arm_select_cc_mode): Use it.
110 2011-12-20 Richard Sandiford <rdsandiford@googlemail.com>
112 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
113 handling of signedness differences to integer types. Only build
114 a new optype if type1 isn't correct.
116 2011-12-20 Vladimir Makarov <vmakarov@redhat.com>
119 * ira-costs.c (find_costs_and_classes): Prefer registers even
120 if the memory cost is the same.
122 2011-12-20 Joseph Myers <joseph@codesourcery.com>
124 * c-decl.c (diagnose_mismatched_decls, grokdeclarator, grokfield)
125 (finish_struct): Refer to C11 in comments. Use flag_isoc11.
126 * c-parser.c (c_parser_static_assert_declaration)
127 (c_parser_static_assert_declaration_no_semi, c_parser_declspecs)
128 (c_parser_alignas_specifier, c_parser_alignof_expression): Refer
129 to C11 in comments. Use flag_isoc11.
130 * c-typeck.c (comptypes_check_different_types): Refer to C11 in
132 * doc/cpp.texi (Overview): Refer to -std=c11 instead of -std=c1x.
133 * doc/cppopts.texi (-std=c11, -std=gnu11): Document in preference
134 to -std=c1x and -std=gnu1x.
135 * doc/extend.texi (Inline, Alternate Keywords, Other Builtins)
136 (__builtin_complex, Unnamed Fields): Refer to -std=c11 and C11
137 instead of -std=c1x and C1X.
138 * doc/invoke.texi (-std=c11, -std=iso9899:2011): Document in
139 preference to -std=c1x.
140 (-std=gnu11): Document in preference to -std=gnu1x.
141 * doc/standards.texi: Document C11 instead of C1X. Document C11
142 as actual standard. Document headers required from freestanding
144 * ginclude/float.h, ginclude/stddef.h: Test __STDC_VERSION__ >=
145 201112L for C11. Update comments to refer to C11.
147 2011-12-20 Andreas Schwab <schwab@linux-m68k.org>
149 * configure: Regenerate.
151 2011-12-20 Bernd Schmidt <bernds@codesourcery.com>
154 * expr.c (store_field): Avoid a direct store if the mode is larger
155 than the size of the bit field.
156 * stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
157 treat non-volatile bit fields like volatile ones.
158 * toplev.c (process_options): Disallow combination of
159 -fstrict-volatile-bitfields and ABI versions less than 2.
160 * config/arm/arm.c (arm_option_override): Don't enable
161 flag_strict_volatile_bitfields if the ABI version is less than 2.
162 * config/h8300/h8300.c (h8300_option_override): Likewise.
163 * config/rx/rx.c (rx_option_override): Likewise.
164 * config/m32c/m32c.c (m32c_option_override): Likewise.
165 * config/sh/sh.c (sh_option_override): Likewise.
167 2011-12-20 Richard Guenther <rguenther@suse.de>
170 * dwarf2out.c (modified_type_die): When the type variant
171 chain is corrupt use the types name, if available, instead
174 2011-12-20 Tristan Gingold <gingold@adacore.com>
176 * config/alpha/alpha.c (alpha_start_function): Adjust condition to
177 create VMS trampoline entry point.
179 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com>
181 PR rtl-optimization/42839
182 * fwprop.c (forward_propagate_subreg): Skip the SIGN/ZERO_EXTEND
183 optimization if the source register is already extended.
185 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com>
187 * lower-subreg.c (can_decompose_p): Check every word of a hard
190 2011-12-19 Sandra Loosemore <sandra@codesourcery.com>
191 Tom de Vries <tom@codesourcery.com>
194 * cse.c (find_comparison_args): Detect fixed point and
197 2011-12-19 Aldy Hernandez <aldyh@redhat.com>
200 * trans-mem.c (ipa_tm_create_version): Unset DECL_WEAK.
202 2011-12-19 Quentin Neill <quentin.neill@amd.com>
205 * config/i386/driver-i386.c (host_detect_local_cpu): Also check
206 family to distinguish PROCESSOR_ATHLON.
208 2011-12-19 Richard Guenther <rguenther@suse.de>
211 * streamer-hooks.h (struct streamer_hooks): Add second
212 ref_p parameter to write_tree.
213 (stream_write_tree): Adjust.
214 (stream_write_tree_shallow_non_ref): New define.
215 * lto-streamer.h (lto_output_tree): Adjust.
216 * lto-streamer-out.c (lto_output_tree): Likewise.
217 * tree-streamer-out.c (streamer_write_chain): Only
218 force the immediate tree to be streamed as non-reference.
220 2011-12-19 Martin Jambor <mjambor@suse.cz>
222 PR tree-optimization/51583
223 * tree-sra.c (load_assign_lhs_subreplacements): Call
224 force_gimple_operand_gsi when necessary also in case of no
225 corresponding replacement on the RHS.
227 2011-12-19 Jakub Jelinek <jakub@redhat.com>
229 * gimple.h (gimplify_seq_add_stmt): Rename to...
230 (gimple_seq_add_stmt_without_update): ... this.
231 * gimplify.c (gimplify_seq_add_stmt): Rename to...
232 (gimple_seq_add_stmt_without_update): ... this.
233 (gimplify_seq_add_stmt): New inline wrapper for it.
234 * tree-vect-patterns.c (append_pattern_def_seq): Use
235 gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt.
237 PR tree-optimization/51596
238 * tree-cfg.c (replace_uses_by): Call gimple_purge_dead_eh_edges
242 PR tree-optimization/51606
243 * tree-vect-patterns.c (append_pattern_def_seq, new_pattern_def_seq):
244 New inline functions.
245 (vect_recog_over_widening_pattern,
246 vect_recog_vector_vector_shift_pattern,
247 vect_recog_sdivmod_pow2_pattern, vect_recog_mixed_size_cond_pattern,
248 adjust_bool_pattern_cast, vect_recog_bool_pattern): Use them.
250 2011-12-19 Richard Guenther <rguenther@suse.de>
253 * tree.c (free_lang_data_in_type): Do not unlink TYPE_DECL
255 (find_decls_types_r): Walk TYPE_DECLs in TYPE_FIELDS.
256 * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Do
257 not stream TREE_CHAIN.
258 (write_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
259 using streamer_write_chain.
260 * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
261 Do not stream TREE_CHAIN.
262 (lto_input_ts_type_non_common_tree_pointers): Stream TYPE_FIELDS
263 using streamer_read_chain.
264 * gimple-streamer-in.c (input_gimple_stmt): Skip non-FIELD_DECLs.
265 * gimple.c (gimple_canonical_types_compatible_p): Properly
266 handle trailing non-FIELD_DECLs in TYPE_FIELDS.
268 2011-12-19 Andreas Schwab <schwab@linux-m68k.org>
270 * configure: Regenerate.
272 2011-12-19 Bernd Schmidt <bernds@codesourcery.com>
274 * emit-rtl.c (init_emit_once): Initialize const_tiny_rtx[3] for
275 partial integer modes.
277 2011-12-19 Andreas Schwab <schwab@linux-m68k.org>
280 * config/m68k/m68k.h (FL_CAS, TARGET_CAS): Define.
281 * config/m68k/m68k.c (FL_FOR_isa_20): Add FL_CAS.
282 * config/m68k/sync.md: Use TARGET_CAS instead of (TARGET_68020 ||
285 2011-12-18 Anatoly Sokolov <aesok@post.ru>
287 * config/ia64/ia64.h (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
288 LEGITIMATE_ADDRESS_REG, LEGITIMATE_ADDRESS_DISP,
289 GO_IF_LEGITIMATE_ADDRESS): Remove macros.
290 * config/ia64/ia64.c (TARGET_LEGITIMATE_ADDRESS_P): Define.
291 (ia64_reg_ok_for_base_p, ia64_legitimate_address_reg,
292 ia64_legitimate_address_disp, ia64_legitimate_address_p): New
295 2011-12-17 Tom de Vries <tom@codesourcery.com>
297 PR tree-optimization/51491
298 * tree-ssa-ccp.c (insert_clobber_before_stack_restore)
299 (gsi_prev_dom_bb_nondebug, insert_clobbers_for_var): New function.
300 (ccp_fold_stmt): Use insert_clobbers_for_var after a successful
301 fold_builtin_alloca_with_align.
302 (ccp_visit_stmt): Calculate and free dominator info.
304 2011-12-16 Eric Botcazou <ebotcazou@adacore.com>
306 * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
307 (frame_blockage): New expander.
308 (frame_blockage<P:mode>): New instruction.
309 * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
310 instructions establishing the frame isn't atomic, emit frame blockage.
312 2011-12-16 Tristan Gingold <gingold@adacore.com>
314 * config/alpha/vms.h (USE_TM_CLONE_REGISTRY): Define.
316 2011-12-16 Tristan Gingold <gingold@adacore.com>
318 * config/alpha/alpha.c (alpha_use_linkage): Follow transparent alias.
319 (alpha_write_one_linkage): Use assemble_name to emit linkage name.
321 2011-12-16 Tristan Gingold <gingold@adacore.com>
323 * config/vms/t-vms (vms.o, vms-c.o): Force output filename.
325 2011-12-16 Tristan Gingold <gingold@adacore.com>
327 * config/vms/vms.c (VMS_CRTL_GLOBAL): Define.
328 (vms_patch_builtins): Handle.
329 * config/vms/vms-crtlmap.map: Add an entry for environ.
331 2011-12-16 Jakub Jelinek <jakub@redhat.com>
334 * sel-sched-ir.c (create_copy_of_insn_rtx): Copy all notes
335 other than REG_EQUAL, REG_EQUIV and REG_LABEL_OPERAND.
337 PR tree-optimization/51576
338 * tree-cfg.c (replace_uses_by): Call maybe_clean_or_replace_eh_stmt
339 even if fold_stmt didn't change anything.
341 2011-12-16 Richard Guenther <rguenther@suse.de>
344 * dwarf2out.c (gen_type_die_with_usage): Use the context of
345 the TYPE_DECL as well if it is file-scope.
347 2011-12-15 DJ Delorie <dj@redhat.com>
349 * config/rl78/rl78.md (return): Rename to rl78_return.
350 * config/rl78/rl78.c (rl78_expand_epilogue): Use new name.
351 (rl78_expand_eh_epilogue): Use new name.
352 (rl78_calculate_death_notes): Likewise.
354 2011-12-15 Jakub Jelinek <jakub@redhat.com>
356 * tree-vectorizer.h (struct _stmt_vec_info): Remove pattern_def_stmt
357 field, add pattern_def_seq.
358 (STMT_VINFO_PATTERN_DEF_STMT): Remove.
359 (STMT_VINFO_PATTERN_DEF_SEQ): Define.
360 (NUM_PATTERNS): Bump to 10.
361 * tree-vect-loop.c (vect_determine_vectorization_factor,
362 vect_transform_loop): Adjust for pattern def changing from a single
363 gimple stmt to gimple_seq.
364 * tree-vect-stmts.c (vect_analyze_stmt, new_stmt_vec_info,
365 free_stmt_vec_info): Likewise.
366 * tree-vect-patterns.c (vect_recog_over_widening_pattern,
367 vect_recog_vector_vector_shift_pattern,
368 vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast,
369 adjust_bool_pattern, vect_mark_pattern_stmts): Likewise.
370 (vect_recog_sdivmod_pow2_pattern): New function.
371 (vect_vect_recog_func_ptrs): Add it.
373 * config/i386/sse.md (vcond<V_256:mode><VI_256:mode>,
374 vcond<V_128:mode><VI124_128:mode>, vcond<VI8F_128:mode>v2di):
375 Use general_operand instead of nonimmediate_operand for
376 operand 5 and no predicate for operands 1 and 2.
377 * config/i386/i386.c (ix86_expand_int_vcond): Optimize
378 x < 0 ? -1 : 0 and x < 0 ? 1 : 0 into vector arithmetic
381 2011-12-15 Georg-Johann Lay <avr@gjlay.de>
383 * config/avr/avr-protos.h (print_operand): Remove.
384 (print_operand_address): Remove.
385 * config/avr/avr.h (PRINT_OPERAND): Remove.
386 (PRINT_OPERAND_ADDRESS): Remove.
387 (PRINT_OPERAND_PUNCT_VALID_P): Remove.
388 * config/avr/avr.c (TARGET_PRINT_OPERAND): New hook define.
389 (TARGET_PRINT_OPERAND_ADDRESS): New hook define.
390 (TARGET_PRINT_OPERAND_PUNCT_VALID_P): New hook define.
391 (print_operand_address): Rename to...
392 (avr_print_operand_address): ...this and make static.
393 (print_operand): Rename to...
394 (avr_print_operand): ...this and make static.
395 (avr_print_operand_punct_valid_p): New static function.
397 2011-12-15 Andreas Tobler <andreast@fgznet.ch>
399 * config/i386/freebsd.h (TARGET_ASM_FILE_END): Define.
401 2011-12-15 Jakub Jelinek <jakub@redhat.com>
404 * c-parser.c (c_parser_omp_clause_num_threads,
405 c_parser_omp_clause_schedule): Call mark_exp_read.
407 2011-12-15 Romain Geissler <romain.geissler@gmail.com>
409 * builtins.def (BUILT_IN_STPNCPY_CHK): New definition.
410 * builtins.c (expand_builtin, fold_builtin_4, maybe_emit_chk_warning):
411 Add BUILT_IN_STPNCPY_CHK case.
412 * gimple-fold.c (gimple_fold_builtin): Likewise.
413 * tree-object-size.c (pass_through_call): Likewise.
414 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
415 call_may_clobber_ref_p_1): Likewise.
416 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call,
417 find_func_clobbers): Likewise.
418 * tree.h (fold_builtin_strncpy_chk): Rename to fold_builtin_stxncpy_chk
419 * builtins.c (fold_builtin_strncpy_chk): Likewise.
420 Rewrite stpncpy_chk calls to strncpy_chk calls if returned value is
423 2011-12-15 Richard Guenther <rguenther@suse.de>
426 * gimple.c (compare_type_names_p): Also compare the TREE_CODE.
427 (iterative_hash_name): Also hash the TREE_CODE.
428 (gimple_types_compatible_p_1): For types with a TYPE_DECL
429 name and a type DECL_CONTEXT recurse to that type.
430 (iterative_hash_gimple_type): Likewise.
432 2011-12-15 Iain Sandoe <iains@gcc.gnu.org>
434 * config/rs6000/rs6000.c (rs6000_emit_prologue): Move update of
435 VRSave mask to save_world() when that is in use.
437 2011-12-15 Richard Guenther <rguenther@suse.de>
439 * lto-wrapper.c (run_gcc): In non-parallel mode remove
440 ltrans inputs immediately after processing them. In parallel
441 mode truncate the ltrans inputs in the make rule that processes
442 them if temporary files are not to be preserved.
444 2011-12-15 Anatoly Sokolov <aesok@post.ru>
446 * config/arm/arm.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
447 * config/arm/arm.c (arm_memory_move_cost, arm_register_move_cost):
449 (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
451 2011-12-15 Richard Guenther <rguenther@suse.de>
454 * tree.h (REGISTER_DEFS_IN_THIS_STMT, NECESSARY,
455 STMT_IN_SSA_EDGE_WORKLIST): Remove no longer existing flag
457 (TREE_ASM_WRITTEN): Update documentation to mention its use
458 on TYPE_DECLs from debug info generation.
459 * tree-streamer-out.c (pack_ts_base_value_fields): Stream
460 TREE_ASM_WRITTEN as always zero for TYPE_DECLs, similar to
463 2011-12-15 Georg-Johann Lay <avr@gjlay.de>
466 * config/avr/avr.c (expand_epilogue): Don't build SUBREG of fp.
467 (avr_prologue_setup_frame): Ditto.
469 2011-12-15 Jakub Jelinek <jakub@redhat.com>
472 * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test
473 !DECL_IGNORED_P instead of !DECL_ARTIFICIAL.
475 2012-12-15 Richard Guenther <rguenther@suse.de>
479 * lto-streamer-out.c (tree_is_indexable): Exclude block-local
484 * tree-streamer-out.c (streamer_write_chain): Stream DECL_EXTERNAL
485 VAR_DECLs and FUNCTION_DECLs locally.
487 2011-12-14 Richard Henderson <rth@redhat.com>
489 * config/arm/arm.md (*addsi3_compare0_scratch): Set predicable.
490 (*compare_negsi_si, *compare_addsi2_op0): Likewise.
491 (*compare_addsi2_op1, *zeroextractsi_compare0_scratch): Likewise.
492 (*compareqi_eq0, *arm_cmpsi_insn, *arm_cmpsi_negshiftsi_si): Likewise.
494 2011-12-14 Richard Guenther <rguenther@suse.de>
496 * tree-cfg.c (replace_uses_by): Fixup TREE_CONSTANT for
497 propagating all kinds of constants.
499 2011-12-14 Richard Guenther <rguenther@suse.de>
502 * lto-streamer-in.c (lto_read_body): Fixup local types
503 TYPE_CANONICAL and variant chain.
505 2011-12-14 Richard Guenther <rguenther@suse.de>
507 * tree.c (free_lang_data_in_type): Do not clear fields
508 dependent on debuginfo level setting.
509 (find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
510 * tree.h (TYPE_STUB_DECL): Properly check that we access a type.
512 2011-12-14 Georg-Johann Lay <avr@gjlay.de>
515 * config/avr/avr.md (mulpsi3): New expander.
516 (*umulqihipsi3, *umulhiqipsi3): New insns.
517 (*mulsqipsi3.libgcc, *mulpsi3.libgcc): New insns.
518 (mulsqipsi3, *mulpsi3): New insn-and-splits.
519 (ashlpsi3): Turn to expander. Move insn code to...
520 (*ashlpsi3): ...this new insn.
522 2011-12-14 Richard Guenther <rguenther@suse.de>
524 * tree-cfg.c (replace_uses_by): Only mark blocks altered
525 that will make a difference. Only recompute ADDR_EXPR
526 invariantness if it could possibly have changed. Do so
527 before folding the statement.
529 2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
531 * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
532 * lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
533 * lto-streamer-in.c (lto_read_body): Likewise.
534 (lto_input_toplevel_asms): Likewise.
535 * lto-section-in.c (lto_create_simple_input_block): Likewise.
536 * ipa-inline-analysis.c (inline_read_section): Likewise.
537 * ipa-prop.c (ipa_prop_read_section): Likewise.
539 * df.h (DF_NOTE): Fix typo in comment.
541 2011-12-13 Aldy Hernandez <aldyh@redhat.com>
543 * trans-mem.c (ipa_tm_create_version_alias): Set DECL_CONTEXT and
546 2011-12-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
548 * regmove.c (fixup_match_2): Only access call_used_regs with hard regs.
550 2011-12-13 Andrew Pinski <apinski@cavium.com>
551 Adam Nemet <anemet@caviumnetworks.com>
553 * config/mips/mips-cpus.def: Add Octeon2.
554 * config/mips/mips-tables.opt: Regenerate.
555 * config/mips/mips.md (define_attr "cpu"): Add Octeon2.
556 * config/mips/driver-native.c (host_detect_local_cpu): Support Octeon2.
557 * config/mips/octeon.md (octeon_arith): Add Octeon2.
558 (octeon_condmove): Likewise.
559 (octeon_load): Rename to ..
560 (octeon_load_o1): this.
561 (octeon_load_o2): New reserve.
562 (octeon_cop_o2): New reserve.
563 (octeon_store): Match Octeon2 also.
564 (octeon_brj): Rename to ..
565 (octeon_brj_o1): this.
566 (octeon_brj_o2): New reserve.
567 (octeon_imul3): Rename to ...
568 (octeon_imul3_o1): this.
569 (octeon_imul3_o2): New reserve.
570 (octeon_imul): Rename to ...
571 (octeon_imul_o1): this.
572 (octeon_imul_o2): New reserve.
573 (octeon_mfhilo): Rename to ...
574 (octeon_mfhilo_o1): This.
575 (octeon_mfhilo_o2): New reserve.
576 (octeon_imadd): Rename to ...
577 (octeon_imadd_o1): this.
578 (octeon_imadd_o2): New reserve.
579 (octeon_idiv): Rename to ..
580 (octeon_idiv_o1): This.
581 (octeon_idiv_o2_si): New reserve.
582 (octeon_idiv_o2_di): Likewise.
583 (octeon_unknown): Match Octeon2 also.
584 * config/mips/mips.c (mips_rtx_cost_data): Add Octeon2 cost data.
585 (mips_issue_rate): Octeon2 can issue 2 at a time.
586 * config/mips/mips.h (TARGET_OCTEON): Match Octeon2 also.
587 (TARGET_OCTEON2): New define.
588 (TUNE_OCTEON): Match Octeon2 also.
590 2011-12-13 Richard Henderson <rth@redhat.com>
592 * config/sparc/tso.h: New file.
593 * config.gcc (sparc-*-linux*, sparc*-*-solaris2*): Use it.
594 * config/sparc/sparc.c (sparc_option_override): Honor
595 SUBTARGET_DEFAULT_MEMORY_MODEL.
596 * config/sparc/sparc.h (SUBTARGET_DEFAULT_MEMORY_MODEL): New.
598 2011-12-13 Aldy Hernandez <aldyh@redhat.com>
601 * trans-mem.c (struct diagnose_tm): Remove saw_unsafe.
602 (diagnose_tm_1): Same.
603 (ipa_tm_execute): Do not test tm_may_enter_irr before we set it.
604 (ipa_tm_scan_irr_function): Return gracefully when no
605 DECL_STRUCT_FUNCTION.
606 (ipa_tm_scan_irr_block): Believe the user on TM attributes.
608 2011-12-13 Martin Jambor <mjambor@suse.cz>
611 * tree-sra.c (propagate_subaccesses_across_link): Do not propagate
612 sub-accesses of scalar accesses.
614 2011-12-13 Martin Jambor <mjambor@suse.cz>
616 PR tree-optimization/51362
617 * ipa-cp.c (estimate_local_effects): When estimated size of a
618 specialized clone is zero, bump it to one.
620 2011-12-13 Richard Guenther <rguenther@suse.de>
623 * tree.c (find_decls_types_r): Also walk DECL_ORIGINAL_TYPE.
624 * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
625 Stream DECL_ORIGINAL_TYPE.
626 * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers):
629 2011-12-13 Jakub Jelinek <jakub@redhat.com>
632 2011-12-12 Jakub Jelinek <jakub@redhat.com>
634 PR tree-optimization/51481
635 * gimple-fold.c (gimple_fold_call): Call
636 maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
637 edges, but gimple_fold_builtin result can't throw.
639 2011-12-13 Jakub Jelinek <jakub@redhat.com>
640 Michael Matz <matz@suse.de>
642 PR tree-optimization/51117
643 * tree-eh.c (sink_clobbers): New function.
644 (execute_lower_eh_dispatch): Call it for BBs ending with
645 internally throwing RESX.
646 * cfgexpand.c (add_scope_conflicts_1): Add all conflicts only
647 at the first real instruction.
649 2011-12-13 Tristan Gingold <gingold@adacore.com>
651 * final.c (final_scan_insn): Guard the call to begin_epilogue
654 2011-12-13 Tristan Gingold <gingold@adacore.com>
656 * vmsdbgout.c (vmsdbgout_write_source_line): New function.
657 (vmsdbgout_end_prologue): Call vmsdbgout_write_source_line.
658 (vmsdbgout_begin_epilogue): Likewise.
659 (vmsdbgout_end_epilogue): Likewise.
660 (vmsdbgout_source_line): Move code to vmsdbgout_write_source_line.
662 2011-12-13 Richard Guenther <rguenther@suse.de>
665 * tree-cfg.c (replace_uses_by): Pass proper arguments to
666 maybe_clean_or_replace_eh_stmt.
668 2011-12-13 Richard Guenther <rguenther@suse.de>
670 PR tree-optimization/51519
671 * ipa-inline.c (edge_badness): Use edge growth in non-guessed
672 branch probability case as well.
674 2011-12-13 Revital Eres <revital.eres@linaro.org>
676 * modulo-sched.c (mark_loop_unsched): Free bbs.
678 2011-12-12 Jakub Jelinek <jakub@redhat.com>
680 PR rtl-optimization/51495
681 * function.c (thread_prologue_and_epilogue_insns): Don't add
682 to bb_tail basic blocks that have EDGE_COMPLEX predecessor edges
683 from basic blocks not needing prologue.
685 PR tree-optimization/51481
686 * gimple-fold.c (gimple_fold_call): Call
687 maybe_clean_or_replace_eh_stmt. Avoid optimization if stmt has EH
688 edges, but gimple_fold_builtin result can't throw.
690 2011-12-12 Vladimir Makarov <vmakarov@redhat.com>
692 PR rtl-optimization/21617
693 * ira-color.c (bucket_allocno_compare_func): Don't compare
694 allocno classes. Compare number of hard registers needed.
696 2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
698 PR tree-optimization/50569
699 * tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
700 in the expression of MODEL instead of just the last one.
702 2011-12-12 Jakub Jelinek <jakub@redhat.com>
705 * calls.c (internal_arg_pointer_based_exp_scan): Don't use
706 VEC_safe_grow_cleared if idx is smaller than VEC_length.
708 2011-12-12 Richard Sandiford <richard.sandiford@linaro.org>
711 * optabs.c (maybe_legitimize_operand_same_code): Use copy_to_mode_reg
712 instead of force_reg. Do nothing if the address is already a
713 non-virtual pseudo register.
715 2011-12-12 Torvald Riegel <triegel@redhat.com>
717 * gimplify.c (voidify_wrapper_expr): Add default handling for
720 2011-12-12 Torvald Riegel <triegel@redhat.com>
722 * tree-ssa-tail-merge.c (gimple_equal_p): Don't treat transaction
725 2011-12-12 Iain Sandoe <iains@gcc.gnu.org>
727 * config/darwin-sections.def (zobj_const_data_section): Fix over-
730 2011-12-11 Richard Henderson <rth@redhat.com>
732 * config/rs6000/rs6000.c (rs6000_expand_interleave): Use
733 BYTES_BIG_ENDIAN, not TARGET_BIG_ENDIAN.
735 2011-12-11 Jakub Jelinek <jakub@redhat.com>
737 PR tree-optimization/51485
738 * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on
741 2011-12-11 Patrick Marlier <patrick.marlier@gmail.com>
743 * trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove edge.
745 2011-12-10 Richard Henderson <rth@redhat.com>
747 * config/rs6000/altivec.md (altivec_vmrghb): Rewrite pattern as
748 vec_select + vec_concat.
749 (altivec_vmrghh, altivec_vmrghw, altivec_vmrghsf, altivec_vmrglb,
750 altivec_vmrglh, altivec_vmrglw, altivec_vmrglsf): Likewise.
751 (vec_perm_constv16qi): New.
752 (vec_extract_evenv4si, vec_extract_evenv4sf, vpkuhum_nomode,
753 vpkuwum_nomode, vec_extract_oddv8hi, vec_extract_oddv16qi,
754 vec_interleave_high<VI>, vec_interleave_low<VI>): Remove.
755 * config/rs6000/paired.md (paired_merge00): Rewrite pattern as
756 vec_select + vec_concat.
757 (paired_merge10, paired_merge01, paired_merge11): Likewise.
758 (vec_perm_constv2sf): New.
759 (vec_interleave_highv2sf, vec_interleave_lowv2sf,
760 vec_extract_evenv2sf, vec_extract_oddv2sf): Remove.
761 * config/rs6000/spe.md (spe_evmergehi): Rewrite pattern as
762 vec_select + vec_concat.
763 (spe_evmergehilo, spe_evmergelo, spe_evmergelohi): New.
764 (vec_perm_constv2si): New.
765 * config/rs6000/vector.md (vec_interleave_highv4sf,
766 vec_interleave_lowv4sf, vec_interleave_high<VEC_64>,
767 vec_interleave_low<VEC_64>): Remove.
768 * config/rs6000/vsx.md (VS_double): New mode attribute.
769 (UNSPEC_VSX_XXPERMDI): Remove.
770 (vsx_xxpermdi_<VSX_L>_1): Rewrite pattern as vec_select + vec_concat.
771 (vsx_xxmrghw_<VSX_W>, vsx_xxmrglw_<VSX_W>): Likewise.
772 (vsx_xxpermdi_<VSX_L>): Change to expander.
773 (vec_perm_const<VSX_D>): New.
774 (vsx_mergel_<VSX_D>, vsx_mergeh_<VSX_D>): New.
775 * config/rs6000/predicates.md (const_0_to_1_operand): New.
776 (const_2_to_3_operand): New.
777 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New.
778 (altivec_expand_vec_perm_const): New.
779 (rs6000_expand_vec_perm_const_1, rs6000_expand_vec_perm_const): New.
780 (rs6000_vectorize_vec_perm_const_ok): New.
781 (rs6000_do_expand_vec_perm): New.
782 (rs6000_expand_extract_even, rs6000_expand_interleave): New.
783 * config/rs6000/rs6000-builtin.def (VEC_MERGE*): Update rtx codes.
784 * config/rs6000/rs6000-modes.def: Add double-wide vector modes.
785 * config/rs6000/rs6000-protos.h: Update.
787 2011-12-10 Richard Henderson <rth@redhat.com>
789 * expr.c (expand_expr_real_2) [VEC_PERM_EXPR]: Avoid passing a
790 CONST_INT to expand_vec_perm as the selector.
791 * optabs.c (expand_vec_perm): Assert the selector is of a proper mode.
793 2011-12-10 Richard Henderson <rth@redhat.com>
795 * genmodes.c (struct mode_data): Remove wider_2x member.
796 (blank_mode): Adjust initializer.
797 (calc_wider_mode): Use XALLOCAVEC.
798 (emit_move_wider): Select double-width same-element vectors for
800 * machmode.h (GET_MODE_2XWIDER_MODE): Update documentation.
801 * config/i386/i386.c (doublesize_vector_mode): Remove.
802 (expand_vselect_vconcat): Use GET_MODE_2XWIDER_MODE instead.
804 2011-12-10 Joern Rennecke <joern.rennecke@embecosm.com>
806 * config/epiphany/epiphany.h (USE_LOAD_POST_INCREMENT): Define.
807 (USE_LOAD_POST_DECREMENT, USE_STORE_POST_INCREMENT): Likewise.
808 (USE_STORE_POST_DECREMENT): Likewise.
810 * config/epiphany/epiphany.h (EPIPHANY_RETURN_REGNO): New macro,
812 (INCOMING_RETURN_ADDR_RTX) .. this. Use EPIPHANY_RETURN_REGNO.
813 (DWARF_FRAME_RETURN_COLUMN): New macro.
815 * config/epiphany/epiphany-protos.h (epiphany_start_function): Declare.
816 * config/epiphany/epiphany.c (epiphany_handle_interrupt_attribute):
817 Split "timer" value into "timer0" and "timer1".
818 Handle page_miss, message and wand. Don't handle static_flag.
820 (epiphany_start_function): New function.
821 (epiphany_compute_function_type): Split "timer" value into "timer0"
822 and "timer1". Handle page_miss, message and wand.
823 Don't handle static_flag.
824 (epiphany_expand_epilogue): Don't use frame_insn for status / iret
826 * config/epiphany/epiphany.h: ASM_DECLARE_FUNCTION_NAME: Define.
827 (enum epiphany_function_type):
828 Split EPIPHANY_FUNCTION_TIMER value into EPIPHANY_FUNCTION_TIMER0
829 and EPIPHANY_FUNCTION_TIMER1.
830 Remove EPIPHANY_FUNCTION_ILINK1 and EPIPHANY_FUNCTION_ILINK2 values.
831 Add EPIPHANY_FUNCTION_PAGE_MISS and EPIPHANY_FUNCTION_MESSAGE values.
832 Rename EPIPHANY_FUNCTION_STATIC_FLAG to EPIPHANY_FUNCTION_WAND.
834 2011-12-10 Nathan Sidwell <nathan@acm.org>
836 PR gcov-profile/51449
837 * coverage.c (coverage_end_function): Always process the coverage
840 2011-12-09 Aldy Hernandez <aldyh@redhat.com>
843 * tree.c (build_common_builtin_nodes): Do not use TM_PURE
844 attribute unless language has support for TM.
845 * config/i386/i386.c (ix86_init_tm_builtins): Exit gracefully in
846 the absence of TM builtins.
848 2011-12-09 Eric Botcazou <ebotcazou@adacore.com>
850 * gimple-fold.c (gimple_fold_stmt_to_constant_1) <GIMPLE_UNARY_RHS>:
851 Also check the TYPE_MODE to recognize useless pointer conversions.
853 2011-12-09 Jakub Jelinek <jakub@redhat.com>
855 PR tree-optimization/51117
856 * tree-eh.c (optimize_clobbers): Don't remove just one
857 clobber, but all consecutive clobbers before RESX.
858 Use gimple_clobber_p predicate.
860 2011-12-09 Michael Meissner <meissner@the-meissners.org>
862 * config/rs6000/rs6000.c (altivec_expand_builtin): Call
863 expand_call to return a valid funciton instead of return
864 cosnt0_rtx/NULL_RTX if there was an error with the builtin.
865 (altivec_expand_ld_builtin): Ditto.
866 (rs6000_inner_target_options): If VSX is selected as a target
867 attribute or pragma, enable ALTIVEC also.
868 (rs6000_pragma_target_parse): Call rs6000_option_override_internal
869 to do all of the standard processing when switching options,
870 including redefining appropriate macros.
872 PR rtl-optimization/51469
873 * varasm.c (default_binds_local_p_1): If the symbol is a gnu
874 indirect function, mark the symbol as non-local.
876 2011-12-09 H.J. Lu <hongjiu.lu@intel.com>
879 * Makefile.in (errors.o): Restored.
881 2011-12-09 Richard Guenther <rguenther@suse.de>
884 * tree.c (free_lang_data_in_decl): Remove freeing conditional
887 2011-12-09 Joern Rennecke <joern.rennecke@embecosm.com>
890 * emit-rtl.c (set_dst_reg_note): New function.
891 * rtl.h (set_dst_reg_note): Declare.
892 * optabs.c (expand_binop, expand_absneg_bit): Use set_dst_reg_note.
893 (emit_libcall_block, expand_fix): Likewise.
894 * function.c (assign_parm_setup_reg, expand_function_start): Likewise.
895 * expmed.c (expand_mult_const, expand_divmod): Likewise.
896 * reload1.c (gen_reload): Likewise.
898 * dse.c (get_stored_val, get_call_args): Use gen_int_mode.
899 * expmed.c (expand_divmod): Likewise.
900 * combine.c (simplify_if_then_else): Likewise.
902 2011-12-09 Kai Tietz <ktietz@redhat.com>
904 * ira-color.c (print_hard_regs_subforest): Use
905 HOST_WIDEST_INT_PRINT_DEC instead of %lld.
906 (allocno_hard_regs): Change type of cost member to HOST_WIDEST_INT.
907 (add_allocno_hard_regs): Change type of argument cost
909 * ira-conflict.c (build_conflict_bit_table): Replace use
910 of long-long by HOST_WIDEST_INT.
912 2011-12-09 Georg-Johann Lay <avr@gjlay.de>
915 * config/avr/avr.md (config/avr/avr.md, *sbix_branch_tmp): Use
916 zero_extract:QIHI instead of zero_extract:HI.
918 2011-12-09 Jakub Jelinek <jakub@redhat.com>
919 Andrew Pinski <apinski@cavium.com>
921 PR tree-optimization/51117
922 * tree-eh.c (optimize_clobbers): New function.
923 (execute_lower_eh_dispatch): Call it.
925 2011-12-09 Richard Guenther <rguenther@suse.de>
927 PR tree-optimization/51482
928 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
929 Make sure to only create REAL_TYPE and INTEGER_TYPE component vectors.
931 2011-12-09 Kai Tietz <ktietz@redhat.com>
933 * implicit-zee.c (num_realized): Change type to long.
934 (num_ze_opportunities): Likewise.
936 2011-12-08 Andrew Pinski <apinski@cavium.com>
938 * config/mips/mips-cpus.def (octeon+): New CPU.
939 * config/mips/mips-tables.opt: Regenerate.
940 * config/mips/mips.h (MIPS_CPP_SET_PROCESSOR): Emit '+' as 'P'.
942 2011-12-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
945 * tree-ssa-dom.c (enum expr_kind): Add EXPR_PHI.
946 (struct hashable_expr): Add struct phi field.
947 (initialize_hash_element): Handle phis; change to use XCNEWVEC.
948 (hashable_expr_equal_p): Handle phis.
949 (iterative_hash_hashable_expr): Likewise.
950 (print_expr_hash_elt): Likewise.
951 (free_expr_hash_elt): Likewise.
952 (dom_opt_enter_block): Create equivalences from redundant phis.
953 (eliminate_redundant_computations): Handle redundant phis.
954 (lookup_avail_expr): Handle phis.
956 2011-12-08 Jakub Jelinek <jakub@redhat.com>
958 PR tree-optimization/51466
959 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also copy
962 2011-12-08 Richard Guenther <rguenther@suse.de>
964 * tree-ssa-operands.c (add_stmt_operand): Do not mark stmts
965 volatile when processing operands of an ADDR_EXPR.
966 (get_indirect_ref_operands): Likewise.
967 (get_tmr_operands): Likewise.
968 (get_expr_operands): Likewise.
970 2011-12-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
973 * config/s390/s390.c (s390_mainpool_finish): Emit the jump over
974 the literal pool as jump insn.
976 2011-12-08 Richard Guenther <rguenther@suse.de>
978 PR tree-optimization/49772
979 * tree-inline.c (optimize_inline_calls): Remove bail out on errors.
981 2011-12-08 Richard Guenther <rguenther@suse.de>
984 * lto-streamer-out.c (produce_symtab): Remove asserts.
986 2011-12-08 Richard Guenther <rguenther@suse.de>
989 * lto-streamer-out.c (tree_is_indexable): Localize variably
990 modified types and their FIELD_DECLs.
992 2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
994 PR tree-optimization/51315
995 * tree.h (get_object_or_type_alignment): Declare.
996 * expr.c (get_object_or_type_alignment): Move to...
997 * builtins.c (get_object_or_type_alignment): ...here. Add assertion.
998 * tree-sra.c (tree_non_mode_aligned_mem_p): Rename to...
999 (tree_non_aligned_mem_p): ...this. Add ALIGN parameter. Look into
1000 MEM_REFs and use get_object_or_type_alignment for them.
1001 (build_accesses_from_assign): Adjust for above change.
1002 (access_precludes_ipa_sra_p): Likewise.
1004 2011-12-08 Richard Guenther <rguenther@suse.de>
1007 * lto-streamer-out.c (tree_is_indexable): Exclude block-local
1008 extern declarations.
1010 2011-12-07 Andrew Pinski <apinski@cavium.com>
1013 * expr.c (do_store_flag): Rewrite code that looks for BIT_AND_EXPR for
1016 2011-12-07 Richard Guenther <rguenther@suse.de>
1018 PR tree-optimization/50823
1019 * ipa-inline.c (edge_badness): Do not account for the number of
1022 2011-12-07 Martin Jambor <mjambor@suse.cz>
1024 PR tree-optimization/50744
1025 * ipa-cp.c (good_cloning_opportunity_p): Assert size_cost is positive,
1026 compute evaluation in HOST_WIDEST_INT.
1027 (safe_add): New function
1028 (propagate_effects): Use safe_add to accumulate effects.
1030 2011-12-06 Joel Sherrill <joel.sherrill@oarcorp.com>
1032 * config/rs6000/rtems.h: Switch to using global_options_set
1033 in SUBSUBTARGET_OVERRIDE_OPTIONS.
1035 2011-12-06 David S. Miller <davem@davemloft.net>
1037 * config/sparc/visintrin.h: Add appropriate __VIS__ cpp protection.
1039 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1041 * config/avr/avr.c (avr_file_start): Fix missing ,
1043 2011-12-06 Jakub Jelinek <jakub@redhat.com>
1046 * config/i386/i386.c (ix86_emit_leave): Call ix86_add_cfa_restore_note
1049 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1051 Forward-port from gcc-4_6-branch r181936 2011-12-02.
1052 * config/avr/avr-mcus.def (avr_mcu_types): ATtiny4313 and
1053 AT86RF401 have a 16-bit SP (their manual is bogus).
1055 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1057 Forward-port from gcc-4_6-branch r181936 2011-12-02.
1060 * config/avr/avr.md (movhi_sp_r): Set insn condition to
1062 * config/avr/avr.c (output_movhi): Use "clr%B0" instead of "in
1063 %B0,__SP_H__" if AVR_HAVE_8BIT_SP.
1064 (avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
1066 2011-12-06 Georg-Johann Lay <avr@gjlay.de>
1070 * config/avr/avr.h (ADDR_SPACE_PGM, ADDR_SPACE_PGM1,
1071 ADDR_SPACE_PGM2, ADDR_SPACE_PGM3, ADDR_SPACE_PGM4,
1072 ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): Write as enum.
1073 (avr_addrspace_t): New typedef.
1074 (avr_addrspace): New declaration.
1075 * config/avr/avr-c.c (avr_toupper): New static function.
1076 (avr_register_target_pragmas, avr_cpu_cpp_builtins): Use
1077 avr_addrspace to get address space information.
1078 * config/avr/avr.c (avr_addrspace): New variable.
1079 (avr_out_lpm, avr_pgm_check_var_decl, avr_insert_attributes,
1080 avr_asm_named_section, avr_section_type_flags,
1081 avr_asm_select_section, avr_addr_space_address_mode,
1082 avr_addr_space_convert, avr_emit_movmemhi): Use it.
1083 (avr_addr_space_pointer_mode): Forward to avr_addr_space_address_mode.
1084 (avr_pgm_segment): Remove.
1086 2011-12-06 Richard Guenther <rguenther@suse.de>
1089 * varasm.c (assemble_alias): Move DECL_EXTERNAL implementation
1090 quirk adjustjment ...
1091 * passes.c (rest_of_decl_compilation): ... here.
1093 2011-12-06 Richard Guenther <rguenther@suse.de>
1096 * gimple-fold.c (gimplify_and_update_call_from_tree): Guard vdef check
1097 for the fact we do not have virtual operands when not optimizing.
1099 2011-12-06 Richard Guenther <rguenther@suse.de>
1101 PR tree-optimization/51245
1102 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces):
1104 (vn_reference_lookup_3): Use it. Properly valueize all refs we create.
1106 2011-12-06 Iain Sandoe <iains@gcc.gnu.org>
1108 * config/rs6000/rs6000.c (darwin_rs6000_override_options): Initialize
1111 2011-12-06 Richard Guenther <rguenther@suse.de>
1113 PR tree-optimization/51363
1114 * gimple.c (gimple_rhs_has_side_effects): Remove.
1115 * gimple.h (gimple_rhs_has_side_effects): Likewise.
1116 * tree-ssa-dom.c (optimize_stmt): Simplify conditional.
1118 2011-12-06 Alan Modra <amodra@gmail.com>
1121 * config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
1122 Do not mark r11 setup as frame-related. Pass correct offset to
1123 rs6000_emit_savres_rtx. Correct out-of-line rs6000_frame_related
1124 arguments. Correct sp_offset. Remove "offset" fudge from
1125 in-line rs6000_frame_related call. Rename misleading variable.
1126 Fix comments and whitespace. Tidy some expressions.
1127 (rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
1128 to r11 in out-of-line case. Correct sp_offset. Pass correct
1129 offset to rs6000_emit_savres_rtx. Rename misleading variable.
1130 Fix comments and whitespace. Tidy some expressions.
1131 (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
1132 adjustment when !saving_GPRs_inline. Correct register mode
1133 used in address calcs.
1134 (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
1135 !restoring_GPRs_inline.
1137 2011-12-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1139 * config/arm/vfp.md (*combine_vcvt_f64_<FCVTI32typename>): Fix
1140 formatting character for vmov.f64 case.
1142 2011-12-05 Jakub Jelinek <jakub@redhat.com>
1144 PR tree-optimization/51396
1145 * tree-ssa-math-opts.c (convert_mult_to_fma): Don't optimize
1146 if MUL_RESULT has zero uses.
1149 * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
1150 for debug info if scope is file_scope.
1153 * c-decl.c (c_finish_incomplete_decl, finish_decl): Call
1154 relayout_decl instead of layout_decl.
1156 2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
1158 * resource.c (init_resource_info): Only consider EXIT_IGNORE_STACK
1159 if there is in epilogue.
1161 2011-12-05 Richard Sandiford <rdsandiford@googlemail.com>
1163 * optabs.c (maybe_emit_sync_lock_test_and_set): Pass a null target
1164 to emit_library_call_value.
1165 (expand_atomic_compare_and_swap): Likewise.
1167 2011-12-05 Vladimir Makarov <vmakarov@redhat.com>
1170 * ira-int.h (struct ira_object): Remove add_data.
1171 (OBJECT_ADD_DATA): Remove.
1173 * ira-build.c (ira_create_object): Remove OBJECT_ADD_DATA
1176 * ira-color.c (object_hard_regs_t, object_hard_regs): Rename to
1177 allocno_hard_regs_t, allocno_hard_regs.
1178 (object_hard_regs_node_t, object_hard_regs_node): Rename to
1179 allocno_hard_regs_node_t and allocno_hard_regs_node.
1180 (struct allocno_color_data): Add new member last_process. Move
1181 profitable_hard_regs, hard_regs_node, and hard_regs_subnodes_start
1182 from object_color_data.
1183 (object_color_data_t, object_color_data, OBJECT_COLOR_DATA): Remove.
1184 (curr_allocno_process): New static variable.
1185 (object_hard_regs_eq, object_hard_regs_htab): Rename to
1186 allocno_hard_regs_eq and allocno_hard_regs_htab.
1187 (init_object_hard_regs, finish_object_hard_regs): Rename to
1188 init_allocno_hard_regs and finish_allocno_hard_regs.
1189 (object_hard_regs_compare, object_hard_regs_node_t): Rename to
1190 allocno_hard_regs_compare and allocno_hard_regs_node_t.
1191 (create_new_object_hard_regs_node): Rename to
1192 create_new_allocno_hard_regs_node.
1193 (add_new_object_hard_regs_node_to_forest): Rename to
1194 add_new_allocno_hard_regs_node_to_forest.
1195 (add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
1196 Rename to add_allocno_hard_regs_to_forest and
1197 collect_allocno_hard_regs_cover.
1198 (setup_object_hard_regs_nodes_parent): Rename to
1199 setup_allocno_hard_regs_nodes_parent.
1200 (remove_unused_object_hard_regs_nodes): Rename to
1201 remove_unused_allocno_hard_regs_nodes.
1202 (enumerate_object_hard_regs_nodes, object_hard_regs_nodes_num):
1203 Rename to enumerate_allocno_hard_regs_nodes and
1204 allocno_hard_regs_nodes_num.
1205 (object_hard_regs_nodes, object_hard_regs_subnode_t): Rename to
1206 allocno_hard_regs_nodes and allocno_hard_regs_subnode_t.
1207 (object_hard_regs_subnode, object_hard_regs_subnodes): Rename to
1208 allocno_hard_regs_subnode and allocno_hard_regs_subnodes.
1209 (object_hard_regs_subnode_index): Rename to
1210 allocno_hard_regs_subnode_index.
1211 (setup_object_hard_regs_subnode_index): Rename to
1212 setup_allocno_hard_regs_subnode_index.
1213 (get_object_hard_regs_subnodes_num): Rename to
1214 get_allocno_hard_regs_subnodes_num.
1215 (form_object_hard_regs_nodes_forest): Rename to
1216 form_allocno_hard_regs_nodes_forest.
1217 (finish_object_hard_regs_nodes_tree): Rename to
1218 form_allocno_hard_regs_nodes_forest
1219 (finish_object_hard_regs_nodes_forest): Rename to
1220 finish_allocno_hard_regs_nodes_forest.
1221 (setup_left_conflict_sizes_p): Use allocno data instead of object ones.
1222 Process conflict allocnos once.
1223 (update_left_conflict_sizes_p): Use allocno data instead of object
1224 ones. Change prototype signature.
1225 (empty_profitable_hard_regs): Use allocno data instead of object ones.
1226 (setup_profitable_hard_regs): Ditto.
1227 (get_conflict_profitable_regs): Rename to
1228 get_conflict_and_start_profitable_regs. Use allocno data for
1229 profitable regs calculation.
1230 (check_hard_reg_p): Change prototype signature. Check profitable
1231 regs for allocno not the objects.
1232 (assign_hard_reg): Process conflict allocnos only once for
1233 updating conflict costs.
1234 (setup_allocno_available_regs_num): Use allocno data instead of
1235 object ones. Modify debug output.
1236 (color_pass): Remove initialization and finalization of object
1239 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
1242 * config/arm/arm.md (*minmax_arithsi): Always require the else
1243 clause in the MINUS case.
1245 2011-12-05 Richard Guenther <rguenther@suse.de>
1247 PR tree-optimization/50904
1248 * tree-ssa-loop-im.c (struct mem_ref): Remove vops member.
1249 (MEM_ANALYZABLE): New.
1250 (memory_references): Remove clobbered_vops and vop_ref_map
1251 members, add all_refs_stored_in_loop member.
1252 (memref_free): Adjust.
1253 (mem_ref_alloc): Likewise.
1254 (gather_mem_refs_stmt): Do not record clobbers, instead
1255 record refs for unanalyzable stmts.
1256 (gather_mem_refs_in_loops): Do not propagate clobbers.
1257 (struct vop_to_refs_elt, vtoe_hash, vtoe_eq, vtoe_free,
1258 record_vop_access, get_vop_accesses, get_vop_stores,
1259 add_vop_ref_mapping): Remove.
1260 (create_vop_ref_mapping_loop): Adjust to simply record all stores.
1261 (analyze_memory_references): Adjust.
1262 (refs_independent_p): Check for not analyzable refs.
1263 (can_sm_ref_p): Likewise.
1264 (ref_indep_loop_p_1): Simplify.
1265 (tree_ssa_lim_finalize): Adjust.
1267 * tree-ssa-loop-im.c (stmt_cost): Simplify, use LIM_EXPENSIVE
1268 rather than magic constants. Assign zero cost to PAREN_EXPR
1269 and SSA_NAME copies. Assign cost proportional to the vector
1270 size for vector constructors.
1272 2011-12-05 Richard Guenther <rguenther@suse.de>
1274 * tree-ssa-alias.h (struct ao_ref_s): Add volatile_p field.
1275 * tree-ssa-alias.c (ao_ref_init): Initialize it.
1276 (ao_ref_init_from_ptr_and_size): Likewise.
1277 (refs_may_alias_p_1): Two volatile accesses conflict.
1278 (ref_maybe_used_by_call_p_1): Likewise.
1279 (call_may_clobber_ref_p_1): Likewise.
1280 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Initialize
1283 2011-12-05 Richard Guenther <rguenther@suse.de>
1285 * tree-ssa.c (verify_ssa): Verify SSA names in the loop over all SSA
1286 names. Remove SSA operand checking, call verify_ssa_operands.
1287 * tree-ssa-operands.h (verify_ssa_operands): Declare.
1288 * tree-ssa-operands.c (verify_ssa_operands): New function.
1290 2011-12-05 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1292 * config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
1293 * config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
1294 * config/arm/constraints.md ("Dt"): New constraint.
1295 * config/arm/predicates.md
1296 (const_double_vcvt_power_of_two_reciprocal): New.
1297 * config/arm/vfp.md (FCVTI32typename): New.
1298 (FCVT): New iterator.
1299 (*combine_vcvt_f32_<FCVTI32typename>): New.
1300 (*combine_vcvt_f64_<FCVTI32typename>): New.
1302 2011-12-05 Richard Guenther <rguenther@suse.de>
1304 * cgraph.c (cgraph_create_edge_1): Initialize
1305 call_stmt_cannot_inline_p from the stmt if possible.
1306 (cgraph_make_edge_direct): Likewise.
1307 * gimple-streamer-in.c (input_gimple_stmt): Do not
1308 call gimple_call_set_cannot_inline.
1309 * gimple.h (enum gf_mask): Remove GF_CALL_CANNOT_INLINE, shift values.
1310 (gimple_call_set_cannot_inline): Remove.
1311 (gimple_call_cannot_inline_p): Likewise.
1312 * ipa-inline-analysis.c (initialize_inline_failed): Look
1313 at the edge call_stmt_cannot_inline_p flag.
1314 * ipa-inline.c (can_inline_edge_p): Likewise.
1315 (early_inliner): Only update the edge flag.
1316 * ipa-prop.c (update_indirect_edges_after_inlining): Likewise.
1317 (ipa_modify_call_arguments): Do not call gimple_call_set_cannot_inline.
1318 * cgraphunit.c (assemble_thunk): Likewise.
1319 * gimple-fold.c (gimple_fold_call): Likewise.
1321 * tree.h (CALL_CANNOT_INLINE_P): Remove.
1322 * tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
1323 * builtins.c (expand_builtin_alloca): With -fmudflap do not expand
1324 alloca calls inline.
1325 * cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
1326 * gimple.c (gimple_build_call_from_tree): Do not read
1327 CALL_CANNOT_INLINE_P.
1328 * gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.
1330 2011-12-05 Jakub Jelinek <jakub@redhat.com>
1331 Eric Botcazou <ebotcazou@adacore.com>
1335 * calls.c (internal_arg_pointer_exp_state): New variable.
1336 (internal_arg_pointer_based_exp_1,
1337 internal_arg_pointer_exp_scan): New functions.
1338 (internal_arg_pointer_based_exp): New function.
1339 (mem_overlaps_already_clobbered_arg_p): Use it.
1340 (expand_call): Free internal_arg_pointer_exp_state.cache vector
1341 and clear internal_arg_pointer_exp_state.scan_start.
1343 2011-12-04 Kaz Kojima <kkojima@gcc.gnu.org>
1345 * config/sh/linux.h (TARGET_DEFAULT): Add MASK_SOFT_ATOMIC.
1346 * config/sh/sync.md: New file.
1347 * config/sh/sh.md: Include sync.md.
1348 * config/sh/sh.opt (msoft-atomic): New option.
1349 * doc/invoke.texi (SH Options): Document it.
1351 2011-12-04 Nathan Sidwell <nathan@acm.org>
1353 * gcov-io.h (struct gcov_info): Replace trailing array with
1355 * profile.c (branch_prob): Only call renamed
1356 coverage_begin_function once.
1357 * coverage.h (coverage_begin_output): Rename to ...
1358 (coverage_begin_function): ... here.
1359 * coverage.c (struct function_list): Rename to ...
1360 (struct coverage_data): ... this. Update all uses.
1361 (gcov_info_var, gcov_fn_info_type, gcov_fn_info_ptr_type): New globals.
1362 (bbg_file_opened, bbg_function_announced): Remove.
1363 (get_coverage_counts): Adjust message.
1364 (coverage_begin_ouput): Rename to ...
1365 (coverage_begin_function): ... here. Move file opening to
1366 coverage_init. Adjust for being called only once.
1367 (coverage_end_function): Remove bbg file and inhibit further
1368 output here on error.
1369 (build_info_type): Adjust for change to pointer to array.
1370 (build_info): Receive array of function pointers and adjust.
1371 (create_coverage): Break into ...
1372 (coverage_obj_init, coverage_obj_fn, coverage_obj_finish):
1373 ... these, and adjust.
1374 (coverage_init): Open the notes file here. Tidy.
1375 (coverage_finish): Call coverage_obj_init etc.
1377 2011-12-04 Ira Rosen <ira.rosen@linaro.org>
1380 * tree-vect-loop.c (vect_create_epilog_for_reduction): Create exit
1381 phi nodes for outer loop in case of double reduction.
1383 2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
1386 * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
1387 parameter as long long.
1389 2011-12-04 Richard Sandiford <rdsandiford@googlemail.com>
1392 * optabs.c (init_sync_libfuncs): Use "or" rather than "ior"
1393 in the external names.
1395 2011-12-03 Jack Howarth <howarth@bromo.med.uc.edu>
1397 * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Pass -no_pie for
1398 non-PIC code when targeting 10.7 or later.
1400 2011-12-03 Iain Sandoe <iains@gcc.gnu.org>
1402 * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when
1404 (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10.
1405 (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10.
1407 2011-12-03 Jakub Jelinek <jakub@redhat.com>
1409 * fold-const.c (fold_unary_loc): Fold VEC_UNPACK_LO_EXPR,
1410 VEC_UNPACK_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
1411 VEC_UNPACK_FLOAT_HI_EXPR with VECTOR_CST argument.
1412 (fold_binary_loc): Fold VEC_PACK_TRUNC_EXPR,
1413 VEC_PACK_FIX_TRUNC_EXPR, VEC_WIDEN_MULT_LO_EXPR
1414 and VEC_WIDEN_MULT_HI_EXPR with VECTOR_CST arguments.
1417 * tree-ssa.c (target_for_debug_bind): Also allow is_gimple_reg_type
1418 vars that aren't referenced.
1419 (tree-ssa-live.c (remove_unused_locals): Don't clear TREE_ADDRESSABLE
1420 of unreferenced local vars.
1421 * cfgexpand.c (expand_debug_expr): For DEBUG_IMPLICIT_PTR allow also
1422 TREE_ADDRESSABLE vars that satisfy target_for_debug_bind.
1424 2011-12-03 Anatoly Sokolov <aesok@post.ru>
1426 * config/arm/arm.h (LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Remove.
1427 * config/arm/arm-protos.h (aapcs_libcall_value): Remove.
1428 * config/arm/arm.c (TARGET_FUNCTION_VALUE_REGNO_P): Define.
1429 (arm_libcall_value_1, arm_function_value_regno_p): New function.
1430 (arm_function_value, arm_libcall_value): Use arm_libcall_value_1.
1431 (aapcs_libcall_value): Make static.
1432 (arm_libcall_value): Add static qualifier.
1434 2011-12-02 Jakub Jelinek <jakub@redhat.com>
1437 * config/i386/sse.md (mul<mode>3 with VI1_AVX2 iterator): For
1438 V32QImode use { 0,2,..,14,32,34,..,46,16,18,..,30,48,50,..,62 }
1439 permutation instead of extract even permutation.
1441 2011-12-02 Nathan Sidwell <nathan@acm.org>
1443 * gcov.c (struct arc_info): Add is_throw field.
1444 (struct (block_info): Add exceptional field, reduce flags size to
1446 (struct function_info): Add has_catch field.
1447 (struct line_info): Add unexceptional field.
1448 (process_file): Call find_exception_blocks if necessary.
1449 (read_graph_file): Adjust. Note if an exceptional edge is seen.
1450 (find_exception_blocks): New.
1451 (add_line_counts): Set line's unexceptional flag if not exceptional.
1452 (output_branch_count): Note exceptional arcs, lines and blocks.
1453 * gcov-dump.c (tag_arcs): Decode arc flags.
1454 * doc/gcov.texi: Document '=====' lines.
1456 2011-12-02 Anatoly Sokolov <aesok@post.ru>
1458 * config/ia64/ia64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS,
1459 PRINT_OPERAND_PUNCT_VALID_P): Remove macros.
1460 * config/ia64/ia64-protos.h (ia64_print_operand,
1461 ia64_print_operand_address): Remove.
1462 * config/ia64/ia64.c (TARGET_PRINT_OPERAND,
1463 TARGET_PRINT_OPERAND_ADDRESS, TARGET_PRINT_OPERAND_PUNCT_VALID_P):
1465 (ia64_print_operand_punct_valid_p): New function.
1466 (ia64_print_operand, ia64_print_operand_address): Make static.
1468 2011-12-02 Michael Meissner <meissner@the-meissners.org>
1471 * config/rs6000/rs6000.c (def_builtin): Use the correct field to
1472 figure out the function's attributes.
1473 (struct builtin_description): Mark mask field as const since we no
1474 longer need to modify it for SPE and PAIRED builtins.
1476 2011-12-02 Joseph Myers <joseph@codesourcery.com>
1480 2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com>
1483 * loop-doloop.c (doloop_modify): New argument zero_extend_p and
1484 zero extend count after the correction to it is done.
1485 (doloop_optimize): Update call to doloop_modify, don't zero extend
1488 2008-11-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
1491 * loop-doloop.c (doloop_modify): Add from_mode argument that says what
1493 (doloop_optimize): Update call to doloop_modify.
1495 2011-12-02 Richard Guenther <rguenther@suse.de>
1498 * ipa.c (varpool_externally_visible_p): Register variables
1499 are always externally visible.
1501 2011-12-02 Sameera Deshpande <sameera.deshpande@arm.com>
1503 * gimple-pretty-print.c (dump_gimple_call): Dereference fn only if
1506 2011-12-02 Martin Jambor <mjambor@suse.cz>
1508 PR tree-optimization/50622
1509 * tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
1510 if both lacc and racc are grp_partial_lhs.
1512 2011-12-01 Kaz Kojima <kkojima@gcc.gnu.org>
1515 * config/sh/sh.c (expand_ashiftrt): Handle TARGET_SH2A same as
1517 (shl_sext_kind): Likewise.
1518 * config/sh/sh.h (SH_DYNAMIC_SHIFT_COST): Likewise.
1519 * config/sh/sh.md (ashlsi3_sh2a, ashrsi3_sh2a, lshrsi3_sh2a): Remove.
1520 (ashlsi3_std): Handle TARGET_SH2A same as TARGET_SH3.
1521 (ashlsi3): Likewise.
1522 (ashrsi3_d): Likewise.
1523 (lshrsi3_d): Likewise.
1524 (lshrsi3): Likewise.
1526 2011-12-01 Diego Novillo <dnovillo@google.com>
1529 * ipa-inline.c (can_inline_edge_p): If the edge E has a statement,
1530 use the statement's inline indicator instead of E's.
1531 Remove consistency check.
1533 2011-12-01 Diego Novillo <dnovillo@google.com>
1538 2011-11-29 Diego Novillo <dnovillo@google.com>
1540 * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
1541 Update field call_stmt_cannot_inline_p from call
1542 graph edge, if needed.
1543 * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
1545 2011-12-01 Nathan Sidwell <nathan@acm.org>
1547 PR gcov-profile/51113
1548 * coverage.c (build_var): Keep coverage variables static.
1550 2011-12-01 Jakub Jelinek <jakub@redhat.com>
1552 PR tree-optimization/51356
1553 * tree-vect-patterns.c (vect_recog_bool_pattern): Give up if
1554 vectype doesn't have VECTOR_MODE_P.
1557 * tree-ssa-dce.c (remove_dead_stmt): Add a debug stmt when removing
1558 as unnecessary a store to a variable with gimple reg type.
1559 * tree-ssa-live.c (remove_unused_locals): Clear TREE_ADDRESSABLE bit
1560 on local unreferenced variables.
1561 * cfgexpand.c (expand_gimple_basic_block): Don't emit DEBUG_INSNs
1562 for !target_for_debug_bind variables.
1564 2011-12-01 Patrick Marlier <patrick.marlier@gmail.com>
1567 * cgraph.h (cgraph_call_node_duplication_hooks): Declare.
1568 * cgraph.c (cgraph_call_node_duplication_hooks): Make global.
1569 * cgraphunit.c (cgraph_copy_node_for_versioning): Call it.
1571 2011-12-01 Andrew Pinski <apinski@cavium.com>
1574 * tree.c (free_lang_data_in_decl): Clear FIELD_DECL's
1577 2011-12-01 Jakub Jelinek <jakub@redhat.com>
1579 PR tree-optimization/51246
1580 * tree-predcom.c (replace_ref_with): Handle also clobber on the rhs.
1582 PR rtl-optimization/51014
1583 * loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs
1584 both from bb and orig_bb.
1586 2011-12-01 Joern Rennecke <joern.rennecke@embecosm.com>
1588 PR tree-optimization/50802
1589 * tree-vrp.c (simplify_conversion_using_ranges): Rewrite test
1590 considering what happens to ranges during sign changes and/or
1591 intermediate narrowing conversions.
1593 2011-11-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1596 * config/pa/pa.md (in_branch_delay): Disallow frame related insns.
1597 (in_nullified_branch_delay): Likewise.
1598 (in_call_delay): Likewise.
1600 2011-11-30 Richard Henderson <rth@redhat.com>
1602 * predict.c (expr_expected_value_1): Assume compare-and-swap builtin
1603 boolean return is true.
1605 2011-11-30 Jakub Jelinek <jakub@redhat.com>
1607 PR rtl-optimization/51044
1608 * dse.c (emit_inc_dec_insn_before): Ensure new_insn is an instruction
1609 rather than just insn body.
1612 * function.c (thread_prologue_and_epilogue_insns): If
1613 stack_realign_drap, add drap_reg to SET_UP_BY_PROLOGUE
1617 * tree-eh.c (cleanup_empty_eh_merge_phis): Add check to
1618 avoid creating duplicate edges here.
1619 (cleanup_empty_eh_unsplit): And remove it in the caller.
1621 2011-11-30 Andrew Pinski <apinski@cavium.com>
1624 * c-parser.c (c_parser_postfix_expression): Check groktypename results
1625 before looking at the main variant.
1627 2011-11-30 Jakub Jelinek <jakub@redhat.com>
1629 PR rtl-optimization/48721
1630 * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set
1631 reg_pending_barrier to TRUE_BARRIER.
1633 PR rtl-optimization/48721
1634 * sched-ebb.c (begin_move_insn): Insert empty unreachable
1635 block after BARRIER if insn is followed by it.
1637 2011-11-30 Richard Henderson <rth@redhat.com>
1639 * config/sparc/sparc-opts.h (enum sparc_memory_model_type): New.
1640 * config/sparc/sparc.opt (mmemory-model=): New option.
1641 * doc/invoke.texi (Sparc Options): Document it.
1642 * config/sparc/sparc.c (sparc_option_override): Provide default
1643 for sparc_memory_model.
1644 (sparc_emit_membar_for_model): Omit barrier combinations that are
1645 implied by the memory model.
1647 2011-11-30 Richard Henderson <rth@redhat.com>
1649 * config/sparc/sync.md (I124MODE): New mode iterator.
1650 (memory_barrier): Remove.
1651 (atomic_exchangesi): New.
1652 (swapsi): Rename from *swapsi.
1653 (atomic_test_and_set<I124MODE>): New.
1654 (ldstubqi): Rename from *ldstubqi, merge with expander.
1655 (ldstub<I24MODE>): Rename from *ldstub<I24MODE>, merge with expander.
1656 (sync_lock_test_and_setsi): Remove.
1657 (sync_lock_test_and_set<I12MODE>): Remove.
1659 2011-11-30 Richard Henderson <rth@redhat.com>
1661 * config/sparc/constraints.md ("w"): New.
1662 * config/sparc/predicates.md (mem_noofs_operand): New.
1663 * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Make static.
1664 Generate the boolean result of the atomic_compare_exchange.
1665 (sparc_expand_compare_and_swap): New.
1666 * config/sparc/sync.md (atomic_compare_and_swap<I>): New.
1667 (atomic_compare_and_swap<I48MODE>_1): Rename from
1668 *sync_compare_and_swap<I48MODE>, use mem_noofs_operand.
1669 (*atomic_compare_and_swapdi_v8plus): Rename from
1670 *sync_compare_and_swapdi_v8plus, use mem_noofs_operand.
1671 (sync_compare_and_swap<I12MODE>): Remove.
1672 (sync_compare_and_swap<I48MODE>): Remove.
1674 2011-11-30 Richard Henderson <rth@redhat.com>
1676 * config/sparc/predicates.md (register_or_v9_zero_operand): New.
1677 * config/sparc/sparc.md (UNSPEC_ATOMIC): New.
1678 * config/sparc/sync.md (atomic_load<I>): New.
1679 (atomic_loaddi_1, atomic_store<I>, atomic_storedi_1): New.
1681 2011-11-30 Richard Henderson <rth@redhat.com>
1683 * config/sparc/predicates.md (zero_or_v7_operand): New.
1684 * config/sparc/sparc.c (sparc_emit_membar_for_model): New.
1685 * config/sparc/sparc-protos.h: Update.
1686 * config/sparc/sync.md (mem_thread_fence): New.
1687 (memory_barrier): Use sparc_emit_membar_for_model.
1688 (membar, *membar_empty, *membar_storestore, *membar_storeload): New.
1689 (*membar_v8): Accept and ignore the membar mask.
1690 (*membar): Accept and print the membar mask.
1692 2011-11-30 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
1694 * config/arm/arm.c (arm_issue_rate): Cortex-A15 can triple issue.
1695 * config/arm/arm.md (mul64): New attribute.
1696 (generic_sched): Cortex-A15 is not scheduled generically.
1697 (cortex-a15.md): Include.
1698 * config/arm/cortex-a15.md: New machine description.
1699 * config/arm/t-arm (MD_INCLUDES): Add cortex-a15.md.
1701 2011-11-30 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
1703 * config/arm/t-arm (MD_INCLUDES): Ensure all md files are listed.
1705 2011-11-30 Iain Sandoe <iains@gcc.gnu.org>
1707 * doc/tm.texi.in (NEXT_OBJC_RUNTIME): Update macro description.
1708 * doc/tm.texi: Regenerate.
1709 * flags.h (flag_next_runtime): Remove references.
1710 * toplev.c: Likewise.
1711 * defaults.h (NEXT_OBJC_RUNTIME): Provide default.
1712 * gccspec.c (lang_specific_driver): Adjust use of NEXT_OBJC_RUNTIME.
1713 * config/darwin.c (darwin_override_options): Provide default
1714 Objective-C abi settings and target conflict checks.
1715 * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Remove unused
1716 code. Adjust indenting.
1718 2011-11-29 Joseph Myers <joseph@codesourcery.com>
1720 * config/sh/sh.h (enum reg_class, REG_CLASS_NAMES)
1721 (REG_CLASS_CONTENTS): Add NON_SP_REGS.
1722 (REGCLASS_HAS_GENERAL_REG): Handle NON_SP_REGS.
1723 * config/sh/constraints.md (u): New constraint.
1725 2011-11-29 Oleg Endo <oleg.endo@t-online.de>
1728 * config/sh/sh.c (sh_secondary_reload): Add case when FPUL
1729 register is being loaded from a pseudo in memory.
1731 2011-11-29 DJ Delorie <dj@redhat.com>
1733 * config.gcc (rl78-*-elf): New case.
1734 * doc/extend.texi: Add RL78 documentation.
1735 * doc/invoke.texi: Likewise.
1736 * doc/md.texi: Likewise.
1737 * doc/contrib.texi: Add RL78.
1738 * doc/install.texi: Add rl78-*-elf.
1739 * config/rl78: New directory for the Renesas RL78.
1741 2011-11-29 Jakub Jelinek <jakub@redhat.com>
1743 PR tree-optimization/51247
1744 * tree-vrp.c (extract_range_from_assert): For signed 1-bit precision
1745 types instead of adding 1 subtract -1 and instead of subtracting 1
1746 add -1 to avoid overflows.
1748 2011-11-29 Andrew MacLeod <amacleod@redhat.com>
1751 * optabs.c (maybe_optimize_fetch_op): New. Look for more optimal
1752 instructions for a FECTH_OP or OP_FECTH sequence.
1753 (expand_atomic_fetch_op): Call maybe_optimize_fetch_op.
1755 2011-11-29 Uros Bizjak <ubizjak@gmail.com>
1757 * config/i386/sync.md (UNSPEC_LDA, UNSPEC_STA): New unspecs.
1758 (movdi_via_fpu): Remove.
1759 (loaddi_via_fpu): New insn pattern.
1760 (storedi_via_fpu): Ditto.
1761 (atomic_loaddi_fpu): Use loaddi_via_fpu and storedi_via_fpu.
1762 (atomic_storedi_fpu): Ditto.
1763 * reg-stack.c (get_true_reg): Handle UNSPEC_LDA.
1764 (subst_stack_regs_pat): Handle UNSPEC_STA.
1766 2011-11-29 Uros Bizjak <ubizjak@gmail.com>
1768 * config/i386/i386.md (*floathi<mode>2_i387_with_temp): Do not
1769 allocate scratch memory for alternative 0.
1771 2011-11-29 Michael Meissner <meissner@linux.vnet.ibm.com>
1773 * config/rs6000/rs6000-builtins.def: Completely rewrite builtin
1774 handling to centralize more of the builtins in this file. Change
1775 some builtin enumerations to be more consistant. Use a new mask
1776 to hold the current builtins, including SPE and PAIRED builtins
1777 which no longer are set via target_flags masks. Add
1778 -mdebug=builtin debug support. For power machines, define all
1779 Altivec and VSX buitins when the compiler starts, but don't allow
1780 the use of a builtin unless the appropriate switch is used, or
1781 #pragma GCC target is used to change the options. If the user
1782 uses #pragma GCC target, update the appropriate hardware macros.
1783 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Ditto.
1784 * config/rs6000/rs6000.opt (rs6000_builtin_mask): Ditto.
1785 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Ditto.
1786 (rs6000_define_or_undefine_macro): Ditto.
1787 (rs6000_target_modify_macros): Ditto.
1788 (rs6000_cpu_cpp_builtins): Ditto.
1789 (altivec_overloaded_builtins): Ditto.
1790 (altivec_build_resolved_builtin): Ditto.
1791 * config/rs6000/rs6000.c (rs6000_target_modify_macros_ptr): Ditto.
1792 (rs6000_builtin_info): Ditto.
1793 (def_builtin): Ditto.
1794 (enable_mask_for_builtins): Ditto.
1795 (DEBUG_FMT_X): Ditto.
1796 (rs6000_debug_reg_global): Ditto.
1797 (rs6000_builtin_mask_calculate): Ditto.
1798 (rs6000_option_override_internal): Ditto.
1799 (rs6000_builtin_conversion): Ditto.
1800 (rs6000_builtin_vectorized_function): Ditto.
1801 (bdesc_3arg): Ditto.
1803 (bdesc_2arg): Ditto.
1804 (builtin_description_predicates): Ditto.
1805 (bdesc_altivec_preds): Ditto.
1806 (bdesc_spe_predicates): Ditto.
1807 (bdesc_spe_evsel): Ditto.
1808 (bdesc_paired_preds): Ditto.
1810 (bdesc_1arg): Ditto.
1811 (rs6000_overloaded_builtin_p): Ditto.
1812 (rs6000_expand_unop_builtin): Ditto.
1813 (bdesc_2arg_spe): Ditto.
1814 (spe_expand_builtin): Ditto.
1815 (rs6000_invalid_builtin): Ditto.
1816 (rs6000_expand_builtin): Ditto.
1817 (rs6000_init_builtins): Ditto.
1818 (spe_init_builtins): Ditto.
1819 (paired_init_builtins): Ditto.
1820 (altivec_init_builtins): Ditto.
1821 (builtin_function_type): Ditto.
1822 (rs6000_common_init_builtins): Ditto.
1823 (rs6000_builtin_reciprocal): Ditto.
1824 (rs6000_builtin_mask_names): Ditto.
1825 (rs6000_pragma_target_parse): Ditto.
1826 (rs6000_function_specific_print): Ditto.
1827 * config/rs6000/rs6000.h (MASK_DEBUG_BUILTIN): Ditto.
1828 (MASK_DEBUG_ALL): Ditto.
1829 (TARGET_DEBUG_BUILTIN): Ditto.
1830 (TARGET_EXTRA_BUILTINS): Ditto.
1831 (REGISTER_TARGET_PRAGMAS): Ditto.
1832 (enum rs6000_btc): Ditto.
1833 (RS6000_BTC_*): Ditto.
1834 (RS6000_BTM_*): Ditto.
1835 (enum rs6000_builtins): Ditto.
1836 * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Ditto.
1837 (rs6000_target_modify_macros): Ditto.
1838 (rs6000_target_modify_macros_ptr): Ditto.
1840 * config/rs6000/vector.md (unsfloat<VEC_int><mode>2): Use the
1841 standard name for converting vector unsigned values to floating
1842 point. Delete the TARGET_VECTORIZE_BUILTIN_CONVERSION hook, which
1843 is handled by machine independent code.
1844 * config/rs6000/rs6000.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Ditto.
1845 (rs6000_builtin_conversion): Ditto.
1847 2011-11-29 Dodji Seketeli <dodji@redhat.com>
1849 * tree-diagnostic (struct loc_t): Rename into struct loc_map_pair.
1850 (maybe_unwind_expanded_macro_loc): Adjust.
1852 2011-11-29 David Edelsohn <dje.gcc@gmail.com>
1853 Aldy Hernandez <aldyh@redhat.com>
1855 * trans-mem.c (ipa_tm_create_version_alias): Mangle new_decl
1857 (ipa_tm_create_version): Same.
1859 2011-11-29 Bernd Schmidt <bernds@codesourcery.com>
1861 * haifa-sched.c (recompute_todo_spec): Simplify and correct the
1862 code checking for a clobber of a condition register when deciding
1863 whether to predicate.
1865 2011-11-29 Diego Novillo <dnovillo@google.com>
1867 * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h.
1868 Update field call_stmt_cannot_inline_p from call graph edge, if needed.
1869 * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c.
1871 2011-11-29 Sameera Deshpande <sameera.deshpande@arm.com>
1873 * config/arm/arm.md (arm_movdi): Update NEG_POOL_RANGE.
1874 (movdf_soft_insn): Likewise.
1875 * config/arm/fpa.md (thumb2_movdf_fpa): Likewise.
1876 * config/arm/neon.md (neon_mov<mode>): Likewise.
1877 * config/arm/vfp.md (movdi_vfp): Likewise.
1878 (movdi_vfp_cortexa8): Likewise.
1879 (movdf_vfp): Likewise.
1881 2011-11-29 Jakub Jelinek <jakub@redhat.com>
1884 * expr.c (expand_expr_addr_expr_1): Don't call force_operand for
1885 EXPAND_SUM modifier.
1887 2011-11-29 Ira Rosen <ira.rosen@linaro.org>
1889 PR tree-optimization/51301
1890 * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that
1891 the last statement doesn't convert to a bigger type than the original
1892 type of the computation.
1894 2011-11-28 Richard Henderson <rth@redhat.com>
1896 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
1897 Handle overlap between retval and oldval. Always compute boolval
1900 2011-11-28 Jakub Jelinek <jakub@redhat.com>
1903 * tree-ssa.c (execute_update_addresses_taken): Remove
1904 var ={v} {CLOBBER} stmts instead of rewriting them into
1905 var_N ={v} {CLOBBER}.
1908 * function.c (convert_jumps_to_returns): When redirecting an edge
1909 succ to EXIT_BLOCK_PTR, clear EDGE_CROSSING flag.
1911 PR tree-optimization/50078
1912 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over
1913 TREE_THIS_VOLATILE also from the old to new lhs resp. rhs.
1915 PR tree-optimization/50682
1916 * tree-eh.c (maybe_remove_unreachable_handlers): New function.
1917 * tree-flow.h (maybe_remove_unreachable_handlers): New prototype.
1918 * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Call it.
1920 2011-11-28 Georg-Johann Lay <avr@gjlay.de>
1922 * doc/extend.texi (AVR Built-in Functions): Add documentation for
1923 __builtin_avr_map8 and __builtin_avr_map16.
1925 * config/avr/avr.md: Document new %t and %T asm output codes.
1926 (define_c_enum "unspec"): Add UNSPEC_MAP_BITS.
1927 (adjust_len): Add map_bits.
1928 (map_bitsqi, map_bitshi): New insns.
1929 * config/avr/avr-protos.h (avr_out_map_bits): New.
1930 * config/avr/avr-protos.c (print_operand): Implement %t and %T.
1931 (adjust_insn_length): Handle ADJUST_LEN_MAP_BITS.
1932 (avr_double_int_push_digit): New function.
1933 (avr_map, avr_revert_map, avr_swap_map, avr_id_map): New functions.
1934 (avr_sig_map, avr_map_hamming_byte): New functions.
1935 (avr_out_swap_bits, avr_out_revert_bits, avr_move_bits,
1936 avr_out_map_bits): New functions.
1937 (enum avr_builtin_id): Add AVR_BUILTIN_MAP8, AVR_BUILTIN_MAP16.
1938 (avr_init_builtins): Populate __builtin_avr_map8, __builtin_avr_map16.
1939 (bdesc_2arg): Add __builtin_avr_map8, __builtin_avr_map16 ...
1940 (avr_expand_builtin): ...and expand them.
1941 * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in defines:
1942 __BUILTIN_AVR_MAP8, __BUILTIN_AVR_MAP16.
1944 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
1947 * config/mips/mips.c (mips_rtx_costs): Handle baddu.
1949 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
1951 * config/mips/mips.c (mips16_unextended_reference_p): Test for BLKmode.
1953 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
1955 * config/mips/mips-protos.h (mips_emit_binary): Declare.
1956 * config/mips/mips.c (mips_emit_binary): Make global.
1957 (mips_set_mips16_mode): Turn off -mfix-r4000 in MIPS16 mode.
1958 (mips_conditional_register_usage): Don't treat LO and HI as
1959 register operands in MIPS16 mode.
1960 (mips_mulsidi3_gen_fn): Use {u,}mulsidi3_{32,64}bit_mips16
1962 * config/mips/predicates.md (muldiv_target_operand): New predicate.
1963 (move_operand): Allow hilo_operand.
1964 * config/mips/mips.md (mul<mode>3): Explicitly specify LO as the
1965 target of MIPS16 multiplies, then move it into the target register.
1966 (mul<mode>3_internal, *macc2, *msac2): Use muldiv_target_operand.
1967 (<u>mulsidi3_32bit_mips16): New expander.
1968 (<u>mulsidi3_32bit): Use muldiv_target_operand.
1969 (<u>mulsidi3_32bit_r4000): Disable for ISA_HAS_DSP.
1970 (<u>mulsidi3_64bit): Require !TARGET_MIPS16. Split into
1971 <u>mulsidi3_64bit_split.
1972 (<u>mulsidi3_64bit_mips16): New expander.
1973 (<u>mulsidi3_64bit_split): Likewise, using expansions from
1974 two previous define_splits.
1975 (<u>mulsidi3_64bit_hilo, *muls<u>_di, <u>msubsidi4): Use
1976 muldiv_target_operand.
1977 (<su>mulsi3_highpart): Use <su>mulsi3_highpart_split for MIPS16 code.
1978 (<su>mulsi3_highpart_internal): Require !TARGET_MIPS16.
1979 Split into <su>mulsi3_highpart_split.
1980 (<su>mulsi3_highpart_split): New expander.
1981 (<su>muldi3_highpart): Turn into a define_expand.
1982 Use <su>muldi3_highpart_split for MIPS16 code.
1983 (<su>muldi3_highpart_internal): Renamed from <su>muldi3_highpart.
1984 Require !TARGET_MIPS16. Split into <su>muldi3_highpart_split.
1985 (<su>muldi3_highpart_split): New expander.
1986 (<u>mulditi3): Explicitly specify LO as the target of MIPS16
1987 multiplies, then move it into the target register.
1988 (<u>mulditi3_internal, <u>maddsidi4): Use muldiv_target_operand.
1989 (divmod<mode>4, udivmod<mode>4): Turn into define_expands.
1990 Use <u>divmod<mode>4_split for MIPS16 code, then explicitly
1991 move LO into operand 0.
1992 (divmod<mode>4_internal, udivmod<mode>4_internal): Renamed
1993 from <u>divmod<mode>4. Use muldiv_target_operand.
1994 Require !TARGET_MIPS16. Split into <u>divmod<mode>4_split.
1995 (<u>divmod<mode>4_split): New expander.
1996 (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): Use muldiv_target_operand.
1997 (mfhi<GPR:mode>_<HILO:mode>): Use hilo_operand.
1999 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com>
2001 * hard-reg-set.h (target_hard_regs): Add x_accessible_reg_set
2002 and x_operand_reg_set.
2003 (accessible_reg_set, operand_reg_set): New macros.
2004 * reginfo.c (init_reg_sets): Initialize accessible_reg_set and
2006 (saved_accessible_reg_set, saved_operand_reg_set): New variables.
2007 (save_register_info): Save them.
2008 (restore_register_info): Restore them.
2009 (init_reg_sets_1): Limit operand_reg_set to accessible_reg_set.
2010 Remove NO_REGS registers from operand_reg_set. Treat members
2011 of operand_reg_set as fixed.
2012 * recog.c (general_operand): Check operand_reg_set rather than NO_REGS.
2013 (register_operand, nonmemory_operand): Likewise.
2014 * varasm.c (make_decl_rtl): Always use DECL_MODE as the mode of
2015 register variables. Check accessible_reg_set and operand_reg_set.
2016 * config/mips/mips.c (mips_conditional_register_usage): Remove
2017 inaccessible register from accessible_reg_set, rather than just
2020 2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
2022 * config/pa/pa-linux.h (TARGET_GAS): Remove comment.
2024 2011-11-26 Richard Henderson <rth@redhat.com>
2026 * config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs
2029 2011-11-26 Richard Henderson <rth@redhat.com>
2031 * optabs.c (expand_atomic_fetch_op): Always return result.
2033 * optabs.c (init_sync_libfuncs_1): Include max in iteration.
2035 * omp-low.c (expand_omp_atomic): Assume anything aligned to
2036 BIGGEST_ALIGNMENT is aligned.
2038 2011-11-26 Richard Henderson <rth@redhat.com>
2040 * config/m68k/m68k.md (UNSPECV_CAS_1, UNSPECV_CAS_2): New.
2041 (UNSPECV_TAS_1, UNSPECV_TAS_2): New.
2042 (I): New mode iterator.
2043 (xz): New mode attribute.
2044 * config/m68k/sync.md: New file.
2046 * config/m68k/linux.h (TARGET_INIT_LIBFUNCS): New.
2047 * config/m68k/m68k.c (m68k_init_sync_libfuncs): New.
2049 2011-11-26 Nathan Sidwell <nathan@acm.org>
2051 PR gcov-profile/51297
2052 * gcov.c (main): Allocate initial names and sources arrays.
2053 (find_source): Don't check for null name or source arrays here.
2055 2011-11-26 Jakub Jelinek <jakub@redhat.com>
2057 PR rtl-optimization/49912
2058 * cfgrtl.c (rtl_verify_flow_info_1): Ignore also EDGE_PRESERVE bit
2059 when counting n_branch.
2061 2011-11-26 Uros Bizjak <ubizjak@gmail.com>
2063 * config/i386/sync.md (movdi_via_fpu): Add %Z insn suffixes.
2065 2011-11-26 Joern Rennecke <joern.rennecke@embecosm.com>
2068 * calls.c (mem_overlaps_already_clobbered_arg_p):
2069 Return false if no outgoing arguments have been stored so far.
2071 2011-11-25 Georg-Johann Lay <avr@gjlay.de>
2073 * config/avr/avr.c (print_operand): Support code = 'i' for CONST_INT.
2075 2011-11-24 Andrew MacLeod <amacleod@redhat.com>
2078 * tree.h (is_builtin_name): No longer external.
2079 * builtins.c (is_builtin_name): Make static.
2080 * varasm.c (incorporeal_function_p): __sync and __atomic external calls
2081 are not incorporeal and may need asm label processing.
2083 2011-11-25 Georg-Johann Lay <avr@gjlay.de>
2086 * config/avr/avr-protos.h (avr_log_t): Add field .builtin.
2087 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2088 Don't bypass TARGET_ALL_DEBUG. Print self-info with ?.
2089 (avr_log_vadump): Support %D and %X to print double_int.
2090 (avr_double_int_pop_digit): New static function.
2091 (avr_dump_double_int_hex): New static function.
2093 2011-11-24 Enkovich Ilya <ilya.enkovich@intel.com>
2096 * config/i386/i386.c (distance_non_agu_define_in_bb): Fix insn
2099 2011-11-24 Andrew MacLeod <amacleod@redhat.com>
2101 * optab.c (maybe_emit_atomic_exchange): New. Try to emit an
2102 atomic_exchange pattern.
2103 (maybe_emit_sync_lock_test_and_set): New. Try to emit an exchange
2104 using __sync_lock_test_and_set.
2105 (maybe_emit_compare_and_swap_exchange_loop): New. Try to emit an
2106 exchange using a compare_and_swap loop.
2107 (expand_sync_lock_test_and_set): New. Expand sync_lock_test_and_set.
2108 (expand_atomic_test_and_set): New. Expand test_and_set operation.
2109 (expand_atomic_exchange): Use new maybe_emit_* functions.
2110 (expand_atomic_store): Use new maybe_emit_* functions.
2111 * builtins.c (expand_builtin_sync_lock_test_and_set): Call
2112 expand_sync_lock_test_and_set routine.
2113 (expand_builtin_atomic_exchange): Remove parameter from call.
2114 (expand_builtin_atomic_clear): Use atomic_clear pattern if present.
2115 (expand_builtin_atomic_test_and_set): Add target and simply call
2116 expand_atomic_test_and_set.
2117 (expand_builtin): Add target to expand_builtin_atomic_test_and_set.
2118 * expr.h (expand_atomic_exchange): Add parameter.
2119 (expand_sync_lock_test_and_set): New prototype.
2120 (expand_atomic_test_and_set, expand_atomic_clear): New prototypes.
2122 2011-11-24 H.J. Lu <hongjiu.lu@intel.com>
2125 * config/i386/i386.h (processor_costs): Revert revision 181357.
2126 * config/i386/i386.c (cost models): Likewise.
2127 (core_cost): Likewise.
2128 (promote_duplicated_reg): Likewise.
2129 (promote_duplicated_reg_to_size): Likewise.
2130 (processor_target): Likewise.
2131 (expand_set_or_movmem_via_loop_with_iter): Likewise.
2132 (expand_set_or_movmem_via_loop): Likewise.
2133 (emit_strset): Likewise.
2134 (expand_movmem_epilogue): Likewise.
2135 (expand_setmem_epilogue): Likewise.
2136 (expand_movmem_prologue): Likewise.
2137 (expand_setmem_prologue): Likewise.
2138 (expand_constant_movmem_prologue): Likewise.
2139 (expand_constant_setmem_prologue): Likewise.
2140 (decide_alg): Likewise.
2141 (decide_alignment): Likewise.
2142 (ix86_expand_movmem): Likewise.
2143 (ix86_expand_setmem): Likewise.
2144 (ix86_slow_unaligned_access): Likewise.
2145 * config/i386/i386.md (strset): Likewise.
2146 * config/i386/sse.md (vec_dupv4si): Likewise.
2147 (vec_dupv2di): Likewise.
2149 2011-11-24 Georg-Johann Lay <avr@gjlay.de>
2151 * config/avr/avr.md (*rotlhi2.15): Set length to 4.
2153 2011-11-24 Razya Ladelsky <razya@il.ibm.com>
2155 * tree-data-ref.c (initialize_data_dependence_relation): Update
2156 comment for the self dependence case.
2157 (compute_self_dependence): Remove.
2158 * tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to
2159 compute_self_dependenc.
2161 2011-11-24 Alan Modra <amodra@gmail.com>
2163 * c-decl.c (warn_if_shadowing): Don't warn if shadowed
2164 identifier is from system header.
2166 2011-11-23 Jakub Jelinek <jakub@redhat.com>
2169 * config/i386/i386.c (decide_alg): Initialize *dynamic_check
2172 2011-11-23 Vladimir Makarov <vmakarov@redhat.com>
2174 PR rtl-optimization/48455
2175 * doc/invoke.texi (-fira-region): Document default values.
2177 * flags-types.h (enum ira_region): Add new value
2178 IRA_REGION_AUTODETECT.
2180 * common.opt (fira-region): Set up initial value to
2181 IRA_REGION_AUTODETECT.
2183 * toplev.c (process_options): Set up flag_ira_region depending on
2186 * ira.c (ira.c): Remove optimize guard for ira_build.
2188 2011-11-23 Chung-Lin Tang <cltang@codesourcery.com>
2190 PR rtl-optimization/50496
2191 * jump.c (redirect_jump): Assert fail on nlabel == NULL_RTX
2192 only after epilogue is created. Add comments.
2194 2011-11-22 Richard Henderson <rth@redhat.com>
2196 * config/ia64/ia64.c (ia64_expand_atomic_op): Add model parameter.
2197 Generate the barrier required for the memory model.
2198 (rtx_needs_barrier): Handle UNSPEC_FETCHADD_REL, UNSPEC_CMPXCHG_REL.
2199 * config/ia64/ia64-protos.h: Update.
2200 * config/ia64/ia64.md (UNSPEC_FETCHADD_REL): New.
2201 (UNSPEC_CMPXCHG_REL): New.
2202 * config/ia64/sync.md (mem_thread_fence): New.
2203 (atomic_load<IMODE>, atomic_store<IMODE>): New.
2204 (atomic_compare_and_swap<IMODE>): New.
2205 (cmpxchg_acq_<I124MODE>, cmpxchg_acq_di): New.
2206 (atomic_exchange<IMODE>): New.
2207 (xchg_acq_<IMODE>): Rename from sync_lock_test_and_set<IMODE>.
2208 (atomic_<FETCHOP><IMODE>, atomic_nand<IMODE>): New.
2209 (atomic_fetch_<FETCHOP><IMODE>, atomic_fetch_nand<IMODE>): New.
2210 (atomic_<FETCHOP>_fetch<IMODE>, atomic_nand_fetch<IMODE>): New.
2211 (fetchadd_rel_<I48MODE>): New.
2212 (sync_<FETCHOP><IMODE>, sync_nand<IMODE>): Remove.
2213 (sync_old_<FETCHOP><IMODE>, sync_old_nand<IMODE>): Remove.
2214 (sync_new_<FETCHOP><IMODE>, sync_new_nand<IMODE>): Remove.
2215 (sync_compare_and_swap<IMODE>): Remove.
2216 (sync_lock_release<IMODE>): Remove.
2218 * config/ia64/ia64.md: Use define_c_enum for UNSPEC_*
2219 and UNSPECV_* constants.
2221 2011-11-22 Tom de Vries <tom@codesourcery.com>
2223 PR rtl-optimization/50764
2224 * sched-deps.c (sched_analyze_insn): Make sure frame-related insns are
2225 not moved past preceding jump.
2227 2011-11-22 Jeff Law <law@redhat.com>
2229 * doc/contrib.texi: Add entry for David Binderman.
2231 2011-11-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2233 * postreload.c (reload_combine): Mark reg_state as invalid at
2234 volatile insns if there has been a use already.
2236 2011-11-21 Aldy Hernandez <aldyh@redhat.com>
2238 * opts.c (finish_options): Do not fail for -fgnu-tm.
2239 * gimple-streamer-out.c (output_gimple_stmt): Handle
2241 * gimple-streamer-in.c (input_gimple_stmt): Same.
2242 * lto-cgraph.c (input_overwrite_node): Read tm_clone bit.
2243 (lto_output_node): Write tm_clone bit.
2245 2011-11-22 Ian Lance Taylor <iant@google.com>
2247 * doc/install.texi (Configuration): Correct doc of
2248 --enable-build-poststage1-with-cxx: it is not experimental.
2250 2011-11-22 Jakub Jelinek <jakub@redhat.com>
2252 PR tree-optimization/51074
2253 * fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
2254 handling for BYTES_BIG_ENDIAN.
2255 * optabs.c (can_vec_perm_for_code_p): Likewise.
2257 2011-11-22 Michael Matz <matz@suse.de>
2260 * trans-mem.c (expand_block_tm): Ignore clobbers.
2262 2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
2264 * config/darwin.h (ENDFILE_SPEC): New.
2265 (DARWIN_CRT1_SPEC): Add crttms.o.
2266 (STARTFILE_SPEC): Likewise for dynamic libs and bundles.
2267 * config/i386.h (ENDFILE_SPEC): Amend to include crttme.o.
2269 2011-11-22 Michael Matz <matz@suse.de>
2272 * tree.c (iterative_hash_expr): Remove break after return.
2274 2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
2276 * target.def (tm_clone_table_section): New hook.
2277 * doc/tm.texi.in (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define.
2278 * doc/tm.texi: Regenerate.
2279 * varasm.c (dump_tm_clone_pairs): Use target tm_clone_table_section.
2280 * output.h (default_clone_table_section): New prototype.
2281 * config/darwin.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): New.
2282 * config/darwin-protos.h (darwin_tm_clone_table_section): New prototype.
2283 * config/darwin.c (darwin_tm_clone_table_section): New.
2285 2011-11-21 Torvald Riegel <triegel@redhat.com>
2287 * trans-mem.c (diagnose_tm_1): Print an expression instead of a
2288 declaration in error messages for indirect calls.
2290 2011-11-21 David S. Miller <davem@davemloft.net>
2292 * config/sparc/sparc.c (sparc_regmode_natural_size): New function
2293 implementing REGMODE_NATURAL_SIZE taking into consideration vector
2295 (sparc_modes_tieable_p): Similarly for MODES_TIEABLE_P.
2296 * config/sparc/sparc-protos.h (sparc_regmode_natural_size,
2297 sparc_modes_tieable_p): Declare.
2298 * gcc/config/sparc/sparc.h (REGMODE_NATURAL_SIZE,
2299 MODES_TIEABLE_P): Use new helper functions.
2302 2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2305 * expmed.c (store_bit_field_1): Use extract_bit_field on big
2306 endian targets if the source cannot be exactly covered by word
2309 2011-11-21 Jakub Jelinek <jakub@redhat.com>
2312 * var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP
2313 macro instead of XEXP.
2315 2011-11-21 Andreas Tobler <andreast@fgznet.ch>
2317 * configure: Regenerate.
2319 2011-11-21 Georg-Johann Lay <avr@gjlay.de>
2321 * config/avr/avr.c (output_reload_in_const): Loading a byte with 0
2322 must not affect cc0.
2323 * config/avr/avr.md (*movhi, *movpsi, *movsi, *movsf): Zero to any
2324 register does not change cc0. Same for any constant to ld-register.
2326 2011-11-21 Uros Bizjak <ubizjak@gmail.com>
2328 * config/i386/mmx.md (unspec) <UNSPEC_MOVNTQ, UNSPEC_PFRCP,
2329 UNSPEC_PFRCPIT1, UNSPEC_PFRCPIT2, UNSPEC_PFRSQRT, UNSPEC_PFRSQIT1>:
2330 Move from config/i386/i386.md
2331 (unspecv) <UNSPECV_EMMS, UNSPECV_FEMMS>: Ditto.
2332 * config/i386/sse.md (unspec) <UNSPEC_MOVNT,UNSPEC_MOVU, UNSPEC_LDDQU,
2333 UNSPEC_PSHUFB, UNSPEC_PSIGN, UNSPEC_PALIGNR, UNSPEC_EXTRQI,
2334 UNSPEC_EXTRQ, UNSPEC_INSERTQI, UNSPEC_INSERTQ, UNSPEC_BLENDV,
2335 UNSPEC_INSERTPS, UNSPEC_DP, UNSPEC_MOVNTDQA, UNSPEC_MPSADBW,
2336 UNSPEC_PHMINPOSUW, UNSPEC_PTEST, UNSPEC_PCMPESTR, UNSPEC_PCMPISTR,
2337 UNSPEC_FMADDSUB, UNSPEC_XOP_UNSIGNED_CMP, UNSPEC_XOP_TRUEFALSE,
2338 UNSPEC_XOP_PERMUTE, UNSPEC_FRCZ, UNSPEC_AESENC, UNSPEC_AESENCLAST,
2339 UNSPEC_AESDEC, UNSPEC_AESDECLAST, UNSPEC_AESIMC,
2340 UNSPEC_AESKEYGENASSIST, UNSPEC_PCLMUL, UNSPEC_PCMP, UNSPEC_VPERMIL,
2341 UNSPEC_VPERMIL2, UNSPEC_VPERMIL2F128, UNSPEC_CAST, UNSPEC_VTESTP,
2342 UNSPEC_VCVTPH2PS, UNSPEC_VCVTPS2PH, UNSPEC_VPERMSI, UNSPEC_VPERMDF,
2343 UNSPEC_VPERMSF, UNSPEC_VPERMTI, UNSPEC_GATHER, UNSPEC_VSIBADDR>: Ditto.
2344 (unspecv) <UNSPECV_LDMXCSR, UNSPECV_STMXCSR, UNSPECV_CLFLUSH,
2345 UNSPECV_MONITOR, UNSPECV_MWAIT, UNSPECV_VZEROALL, UNSPECV_VZEROUPPER>:
2347 * config/i386/sync.md (unspec) <UNSPEC_LFENCE, UNSPEC_SFENCE,
2348 UNSPEC_MFENCE, UNSPEC_MOVA>: Ditto.
2349 (unspecv) <UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2, UNSPECV_CMPXCHG_3,
2350 UNSPECV_CMPXCHG_4, UNSPECV_XCHG, UNSPECV_LOCK>: Ditto.
2351 (sse2_lfence): Move from config/i386/sse.md.
2352 (*sse2_lfence): Ditto.
2353 (sse_sfence): Ditto.
2354 (*sse_sfence): Ditto.
2355 (sse2_mfence): Ditto.
2356 (mfence_sse2): Ditto. Rename from *sse2_mfence. Enable also
2358 (mem_thread_fence): Use mfence_sse2.
2360 2011-11-21 Georg-Johann Lay <avr@gjlay.de>
2362 * config/avr/avr.h (struct base_arch_s): Add field sfr_offset.
2363 * config/avr/avr-devices.c: Ditto. And initialize it.
2364 * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define
2366 * config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove.
2367 (out_movhi_r_mr, out_movhi_mr_r): Remove.
2368 (out_movsi_r_mr, out_movsi_mr_r): Remove.
2369 * config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20.
2370 (*insv.io, *insv.not.io): Ditto.
2371 * config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static.
2372 (print_operand): Implement "%i" to print address as I/O address.
2373 (output_movqi): Clean up call of out_movqi_mr_r.
2374 (output_movhi): Clean up call of out_movhi_mr_r.
2375 (avr_file_start): Use avr_current_arch->sfr_offset instead of
2376 magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1.
2377 (avr_out_sbxx_branch): Use %i instead of %m-0x20.
2378 (out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static.
2379 (out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len.
2380 (out_shift_with_cnt): Clean up code: Use avr_asm_len.
2381 (output_movsisf): Use output_reload_insisf for all CONSTANT_P sources.
2382 (avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources.
2383 Clean up call of avr_out_store_psi.
2384 (output_reload_in_const): Don't cut symbols longer than 2 bytes.
2385 (output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to
2386 try if setting pre-cleared register is advantageous.
2387 (avr_out_plus_1): Use gen_int_mode instead of GEN_INT.
2389 2011-11-20 Joey Ye <joey.ye@arm.com>
2391 * expr.c (expand_expr_real_1): Correctly handle strict volatile
2392 bitfield loads smaller than mode size.
2394 2011-11-20 Richard Henderson <rth@redhat.com>
2396 * config/mips/mips.c (mips_init_libfuncs): Call init_sync_libfuncs.
2398 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
2401 * config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
2402 patterns for supported mode only.
2405 * config/i386/i386.c (ix86_expand_builtin)
2406 <IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.
2408 2011-11-20 Uros Bizjak <ubizjak@gmail.com>
2410 * config/i386/i386.md (UNSPEC_MOVNTI): Remove.
2411 (UNSPEC_MOVNTQ): New unspec.
2412 * config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
2413 Use UNSPEC_MOVNTQ instead of UNSPEC_MOVNT.
2414 * config/i386/sse.md (sse2_movnti<mode>): Use UNSPEC_MOVNT instead of
2416 (STORENT_MODE): Add DI and V4DI modes.
2418 2011-11-20 Nathan Sidwell <nathan@acm.org>
2420 PR gcov-profile/51113
2421 * coverage.c (build_var): Propagate visibility for public
2422 decls. Use make_decl_one_only for PIC correctness.
2425 * gcc.misc-tests/gcov-13.c: Check gcovpart-13b coverage
2426 * gcc.misc-tests/gcov-16.c: New.
2427 * gcc.misc-tests/gcov-17.c: New.
2428 * g++.dg/gcov/gcov-8.C: New.
2429 * g++.dg/gcov/gcov-9.C: New.
2430 * g++.dg/gcov/gcov-10.C: New.
2432 2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
2434 PR rtl-optimization/51187
2435 * reorg.c (relax_delay_slots): Do not consider a jump useless if there
2436 is a barrier between the jump and its target label.
2438 2011-11-19 Patrick Marlier <patrick.marlier@gmail.com>
2441 * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.
2443 2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
2445 * expmed.c (store_bit_field_1): Revert bogus formatting change.
2447 2011-11-19 Richard Earnshaw <rearnsha@arm.com>
2450 * config/arm/arm.c (neon_disambiguate_copy): Correctly handle partial
2451 overlap of src and dest operands.
2453 2011-11-19 Iain Sandoe <iains@gcc.gnu.org>
2455 * config/darwin.h (ASM_DEBUG_SPEC): New.
2456 * config/darwin9.h (ASM_DEBUG_SPEC): New.
2458 2011-11-18 Jan Hubicka <jh@suse.cz>
2460 * config/i386/i386.c (atom_cost): Disable SSE loop until alignment
2463 2011-11-18 Anatoly Sokolov <aesok@post.ru>
2465 * config/cris/cris.c (cris_function_value_regno_p): Make static.
2466 (TARGET_FUNCTION_VALUE_REGNO_P): Define.
2467 * config/cris/cris.h (FUNCTION_VALUE_REGNO_P): Remove.
2468 * config/cris/cris-protos.h (cris_function_value_regno_p): Remove.
2470 2011-11-18 H.J. Lu <hongjiu.lu@intel.com>
2473 * doc/extend.texi: Document __builtin_ia32_movnti64.
2475 * config/i386/emmintrin.h (_mm_stream_si64): New.
2477 * config/i386/i386-builtin-types.def: Add VOID_FTYPE_PLONGLONG_LONGLONG.
2479 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTI64.
2480 (bdesc_special_args): Update __builtin_ia32_movnti. Add
2481 __builtin_ia32_movnti64.
2482 (ix86_expand_special_args_builtin): Handle
2483 VOID_FTYPE_PLONGLONG_LONGLONG.
2485 * config/i386/i386.md (UNSPEC_MOVNTI): New.
2487 * config/i386/sse.md (sse2_movntsi): Renamed to ...
2488 (sse2_movnti<mode>): This.
2490 2011-11-18 Georg-Johann Lay <avr@gjlay.de>
2493 * config/avr/avr.h (base_arch_s): Add field n_segments.
2494 (ADDR_SPACE_PGM1, ADDR_SPACE_PGM2, ADDR_SPACE_PGM3,
2495 ADDR_SPACE_PGM4, ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): New address spaces.
2496 (AVR_HAVE_ELPM, AVR_HAVE_ELPMX): New defines.
2497 (INIT_EXPANDERS): New define.
2498 * config/avr/avr-protos.h (avr_mem_pgmx_p): New.
2499 (avr_init_expanders): New.
2500 (avr_emit_movmemhi, avr_out_movmem): New.
2501 (avr_xload_libgcc_p): New.
2502 * config/avr/avr-c.c (avr_register_target_pragmas): Register
2503 address spaces __pgm1, __pgm2, __pgm3, __pgm4 __pgm5, __pgmx.
2504 (avr_cpu_cpp_builtins): Add built-in defines __PGM1,
2505 __PGM2, __PGM3, __PGM4, __PGM5, __PGMX.
2506 * config/avr/avr-devices.c (avr_arch_types): Set field n_segments.
2508 * config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
2509 3 bits instead of just 1.
2510 (xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
2511 (progmem_section): Change from section to array of sections.
2512 (progmem_section_prefix): New static variable.
2513 (avr_file_start): Print set for __RAMPZ__
2514 (avr_option_override): Move initialization of RTXes from here...
2515 (avr_init_expanders): ...to this new function.
2516 (avr_pgm_segment): New static function.
2517 (avr_decl_pgm_p): Handle error_mark_node.
2518 (avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
2519 (avr_out_xload, avr_find_unused_d_reg): New static functions.
2520 (expand_prologue, expand_epilogue): Use rampz_rtx.
2521 (print_operand): Hande CONST_STRING.
2522 (avr_xload_libgcc_p): New static function.
2523 (avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
2524 (avr_progmem_p): Return 2 for 24-bit flash address space.
2525 (avr_out_sbxx_branch): Clean-up code from ASn macros.
2526 (out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
2527 address and print symbolically.
2528 (avr_asm_named_section, avr_section_type_flags,
2529 avr_encode_section_info, avr_asm_select_section,
2530 avr_addr_space_address_mode, avr_addr_space_pointer_mode,
2531 avr_addr_space_legitimate_address_p, avr_addr_space_convert,
2532 avr_addr_space_legitimize_address): Handle new address spaces.
2533 (avr_output_progmem_section_asm_op): New static function.
2534 (avr_asm_init_sections): Initialize progmem_section[].
2535 (adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
2536 (avr_const_address_lo16): New static function.
2537 (avr_assemble_integer): Use it to handle 3-byte integers.
2538 (avr_emit_movmemhi, avr_out_movmem): New functions.
2540 * config/avr/predicates.md (nox_general_operand): Handle new
2542 * config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
2543 (adjust_len): Add xload, movmem.
2544 (SP_ADDR): New define_constants.
2545 (isa): Add "lpm", "lpmx", "elpm", "elpmx".
2546 (enabled): Handle them.
2547 (load<mode>_libgcc): New expander.
2548 (*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
2549 (xload8_A, xload<mode>_A): New insn-and-splits.
2550 (xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
2551 (mov<mode>): Handle new address spaces.
2552 (movmemhi): Rewrite using avr_emit_movmemhi.
2553 (MOVMEM_r_d): New mode attribute.
2554 (movmem_<mode>, movmem_qi_elpm): New insns.
2555 (setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
2556 C-code. Use label instead of hard-coded instrunction lengths.
2558 2011-11-18 Martin Jambor <mjambor@suse.cz>
2560 PR tree-optimization/50605
2561 * gimple.c (is_gimple_ip_invariant_address): Also handle MEM_REFs
2562 of IPA invariant decls.
2564 2011-11-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
2566 * tree-outof-ssa.c (insert_back_edge_copies): Add call to
2567 mark_dfs_back_edges.
2569 2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
2572 * configure.ac: Remove ranlib special-casing for Darwin.
2573 * configure: Regenerate.
2575 2011-11-18 Uros Bizjak <ubizjak@gmail.com>
2577 PR tree-optimization/51118
2578 * fold-const.c (fold_checksum_tree): Check for TS_TYPED structure
2579 before using TREE_TYPE accessor on expr.
2581 2011-11-17 Jan Hubicka <jh@suse.cz>
2584 * i386.c (atom_cost): Fix 32bit memset description.
2585 (expand_set_or_movmem_via_loop_with_iter): Output proper bounds check
2587 (expand_movmem_epilogue): Handle epilogues up to size 15 w/o producing
2589 (decide_alg): sse_loop is not useable wthen SSE2 is disabled;
2590 when not optimizing always use rep movsb or lincall; do not produce
2591 word sized loops when optimizing memset for size (to avoid need
2592 for large constants).
2593 (ix86_expand_movmem): Get into sync with ix86_expand_setmem;
2594 choose unroll factors better; always do 128bit moves when producing
2595 SSE loops; do not produce loopy epilogue when size is too small.
2596 (promote_duplicated_reg_to_size): Do not look into desired alignments
2597 when doing vector expansion.
2598 (ix86_expand_setmem): Track better when promoted value is available;
2599 choose unroll factors more sanely. Output loopy epilogue only
2602 2011-11-17 Steve Ellcey <sje@cup.hp.com>
2605 * output.h (fprint_w): Remove.
2606 * final.c (fprint_w): Remove.
2607 (output_addr_const): Change fprint_w back to fprintf.
2609 2011-11-17 Andrew Pinski <apinski@cavium.com>
2611 * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for MIPS.
2613 2011-11-17 Andrew MacLeod <amacleod@redhat.com>
2615 * builtins.c (expand_builtin): Remove 4th parameter representing
2616 weak/strong mode when __atomic_compare_exchange becomes a library call.
2618 2011-11-17 Richard Henderson <rth@redhat.com>
2620 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
2621 new pseudo for target after convert_modes.
2622 (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
2624 2011-11-17 Richard Henderson <rth@redhat.com>
2626 * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get
2627 new pseudo for target after convert_modes.
2628 (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise.
2630 2011-11-17 Richard Henderson <rth@redhat.com>
2632 * builtins.c (expand_builtin_mem_thread_fence): Remove.
2633 (expand_builtin_mem_signal_fence): Remove.
2634 (expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.
2635 (expand_builtin_sync_synchronize): Likewise.
2636 (expand_builtin_atomic_signal_fence): Use expand_mem_signal_fence.
2637 * optabs.c (expand_asm_memory_barrier): Split out from
2638 expand_builtin_mem_signal_fence.
2639 (expand_mem_thread_fence): New, a combination of code from
2640 expand_builtin_mem_thread_fence and expand_builtin_sync_synchronize.
2641 (expand_mem_signal_fence): Moved and renamed from
2642 expand_builtin_mem_signal_fence.
2643 (expand_atomic_exchange): Use expand_mem_thread_fence.
2644 (expand_atomic_load, expand_atomic_store): Likewise.
2645 * expr.h, optabs.h: Update decls.
2647 2011-11-17 Bin Cheng <bin.cheng@arm.com>
2649 PR rtl-optimization/50663
2650 * cprop.c (implicit_set_indexes): New global variable.
2651 (insert_set_in_table): Add additional parameter and record implicit
2653 (hash_scan_set): Add additional parameter and pass it to above.
2654 (hash_scan_insn): Pass false to hash_scan_set.
2655 (compute_hash_table_work): Pass true to hash_scan_set.
2656 (compute_cprop_data): Add implicit set to AVIN of block which the
2657 implicit set is recorded for.
2658 (one_cprop_pass): Handle implicit_set_indexes array.
2660 2011-11-17 Michael Matz <matz@suse.de>
2664 * tree-ssa-live.c (mark_all_vars_used_1): Recurse only for decls of
2666 (remove_unused_locals): Ditto.
2668 2011-11-16 Richard Henderson <rth@redhat.com>
2670 * config/alpha/alpha.c (alpha_split_compare_and_swap_12): Copy
2671 ALIAS_SET_MEMORY_BARRIER when creating a new memory.
2672 (alpha_split_atomic_exchange_12): Likewise.
2673 * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Likewise.
2675 2011-11-16 Joseph Myers <joseph@codesourcery.com>
2677 * config/i386/i386elf.h (PREFERRED_DEBUGGING_TYPE): Remove.
2679 2011-11-16 David Edelsohn <dje.gcc@gmail.com>
2681 * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags):
2682 Default to minimum alignment if decl is NULL.
2684 2011-11-16 Uros Bizjak <ubizjak@gmail.com>
2686 * config/i386/sse.md (round<mode>2_vec_pack_sfix): Optimize V2DFmode
2688 (<sse4_1>_round<ssemodesuffix>_vec_pack_sfix<avxsizesuffix>): Ditto.
2690 2011-11-16 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
2692 * doc/invoke.texi: Document AMD bdver1 and btver1.
2694 2011-11-16 Richard Earnshaw <rearnsha@arm.com>
2695 Bernd Schmidt <bernds@coudesourcery.com>
2696 Sebastian Huber <sebastian.huber@embedded-brains.de>
2699 * config/arm/arm.c (store_multiple_sequence): Avoid cases where
2700 the base reg is stored iff compiling for Thumb1.
2702 2011-11-16 Razya Ladelsky <razya@il.ibm.com>
2704 PR tree-optimization/49960
2705 * tree-data-ref.c (initialize_data_dependence_relation): Add
2707 Remove call to compute_self_dependence.
2708 (compute_affine_dependence): Remove the !DDR_SELF_REFERENCE condition.
2709 (compute_self_dependence): Remove old code. Add call to
2710 compute_affine_dependence.
2711 (compute_all_dependences): Remove call to compute_self_dependence.
2712 Add call to compute_affine_dependence.
2714 2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2717 * expmed.c (store_bit_field_1): Use extract_bit_field on big
2718 endian targets if the source cannot be exactly covered by word
2721 2011-11-15 Joseph Myers <joseph@codesourcery.com>
2723 * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Change STRING_LIMIT to
2726 2011-11-15 Richard Henderson <rth@redhat.com>
2728 * config/alpha/alpha.c (alpha_pre_atomic_barrier): New.
2729 (alpha_post_atomic_barrier): New.
2730 (alpha_split_atomic_op): New memmodel argument; honor it.
2731 (alpha_split_compare_and_swap): Take array of operands. Honor
2732 memmodel; always set bool output
2733 (alpha_expand_compare_and_swap_12): Similarly.
2734 (alpha_split_compare_and_swap_12): Similarly.
2735 (alpha_split_atomic_exchange): Similarly. Rename from
2736 alpha_split_lock_test_and_set.
2737 (alpha_expand_atomic_exchange_12): Similarly. Rename from
2738 alpha_expand_lock_test_and_set_12.
2739 (alpha_split_atomic_exchange_12): Similarly. Rename from
2740 alpha_split_lock_test_and_set_12.
2741 * config/alpha/alpha-protos.h: Update.
2742 * config/alpha/alpha.md (UNSPECV_CMPXCHG): New.
2743 * config/alpha/constraints.md ("w"): New.
2744 * config/alpha/predicates.md (mem_noofs_operand): New.
2745 * config/alpha/sync.md (atomic_compare_and_swap<mode>): Rename from
2746 sync_compare_and_swap<mode>; add the new parameters.
2747 (atomic_exchange<mode>): Update from sync_test_and_set<mode>.
2748 (atomic_fetch_<op><mode>): Update from sync_old_<op><mode>.
2749 (atomic_<op>_fetch<mode>): Update from sync_new_<op><mode>.
2750 (atomic_<op><mode>): Update from sync_<op><mode>.
2752 2011-11-16 Tom de Vries <tom@codesourcery.com>
2754 * tree-ssa-tail-merge.c (replace_block_by): Add frequency of bb2 to bb1.
2756 2011-11-16 Alan Modra <amodra@gmail.com>
2758 PR rtl-optimization/51051
2760 * function.c (thread_prologue_and_epilogue_insns): Guard
2761 emitting return with single_succ_p test.
2763 2011-11-15 Joern Rennecke <joern.rennecke@embecosm.com>
2765 * config/epiphany/epiphany.md (mov<mode>cc): Fix code to
2766 get mode from CMP_OP1 if CMP_OP0 is VOIDmode.
2768 2011-11-15 Uros Bizjak <ubizjak@gmail.com>
2770 * config/i386/sse.md (vec_pack_trunc_v2df): Optimize sequence for AVX.
2771 (vec_pack_sfix_trunc_v2df): Ditto.
2772 (vec_pack_sfix_v2df): Ditto.
2773 (vec_pack_sfix_trunc_v4df): Generate fix_truncv4dfv4si2 and
2774 avx_vec_concatv8si patterns.
2775 (vec_pack_sfix_v4df): Generate avx_cvtpd2dq256 and
2776 avx_vec_concatv8si patterns.
2778 2011-11-15 Torvald Riegel <triegel@redhat.com>
2780 * c-parser.c (c_parser_transaction_expression): Require parentheses
2781 when parsing transaction expressions.
2783 2011-11-15 Tristan Gingold <gingold@adacore.com>
2785 * incpath.c (get_added_cpp_dirs): New function.
2786 * incpath.h (get_added_cpp_dirs): Declare.
2787 * config/vms/vms-c.c (vms_c_register_includes): New function.
2788 (vms_std_modules): New variable.
2789 * config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define.
2790 (vms_c_register_includes): Declare.
2792 2011-11-15 Tristan Gingold <gingold@adacore.com>
2794 * c-family/c-pragma.h (pragma_extern_prefix): Declare.
2795 * c-family/c-pragma.c (pragma_extern_prefix): Make it public.
2796 * config/vms/vms-c.c (saved_extern_prefix): New variable.
2797 (vms_pragma_extern_prefix): New function.
2798 (vms_c_register_pragma): Register vms_pragma_extern_prefix.
2800 2011-11-15 Georg-Johann Lay <avr@gjlay.de>
2803 * config/avr/avr.h (ADDR_SPACE_PGM): New address spaces.
2804 (REGISTER_TARGET_PRAGMAS): New define.
2805 * config/avr/avr-protos.h (avr_mem_pgm_p): New.
2806 (avr_load_libgcc_p): New.
2807 (avr_register_target_pragmas): New.
2808 (asm_output_external_libcall): Remove.
2809 (avr_log_t): Add field "progmem". Order alphabetically.
2810 * config/avr/avr-log.c (avr_log_set_avr_log): Set avr_log.progmem.
2811 * config/avr/avr-c.c (langhooks.h): New include.
2812 (avr_register_target_pragmas): New function. Register address
2814 (avr_cpu_cpp_builtins): Add built-in define __PGM.
2816 * config/avr/avr.c: Include "c-family/c-common.h".
2817 (TARGET_LEGITIMATE_ADDRESS_P): Remove define.
2818 (TARGET_LEGITIMIZE_ADDRESS): Remove define.
2819 (TARGET_ADDR_SPACE_SUBSET_P): Define to...
2820 (avr_addr_space_subset_p): ...this new static function.
2821 (TARGET_ADDR_SPACE_CONVERT): Define to...
2822 (avr_addr_space_convert): ...this new static function.
2823 (TARGET_ADDR_SPACE_ADDRESS_MODE): Define to...
2824 (avr_addr_space_address_mode): ...this new static function.
2825 (TARGET_ADDR_SPACE_POINTER_MODE): Define to...
2826 (avr_addr_space_pointer_mode): ...this new static function.
2827 (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define to...
2828 (avr_addr_space_legitimate_address_p): ...this new static function.
2829 (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Define to...
2830 (avr_addr_space_legitimize_address): ...this new static function.
2831 (avr_mode_code_base_reg_class): Handle address spaces.
2832 (avr_regno_mode_code_ok_for_base_p): Ditto.
2833 (lpm_addr_reg_rtx, lpm_reg_rtx, all_regs_rtx): New static variables.
2834 (avr_option_override): Initialize them.
2835 (output_reload_in_const): Use all_regs_rtx. Fix signedness of loop
2837 (avr_pgm_segment): New static function.
2838 (avr_decl_pgm_p, avr_mem_pgm_p): New static functions.
2839 (avr_out_lpm, avr_out_lpm_no_lpmx): New static functions.
2840 (output_movqi, output_movhi, output_movsisf, avr_out_movpsi): Call
2841 avr_out_lpm to handle loads from progmem.
2842 (avr_load_libgcc_p): New static function.
2843 (avr_progmem_p): Test if decl is in flash.
2844 (avr_pgm_pointer_const_p): New static function.
2845 (avr_nonconst_pointer_addrspace): New static function.
2846 (avr_pgm_check_var_decl): New static function.
2847 (avr_insert_attributes): Use it. Change error message to report
2848 cause (progmem or address space) when code wants to write to flash.
2849 (avr_section_type_flags): Unset section flag SECTION_BSS for
2852 * config/avr/predicates.md (nop_general_operand): New predicate.
2853 (nox_general_operand): New predicate.
2854 * config/avr/avr.md (LPM_REGNO): New define_constant.
2855 (load<mode>_libgcc): New expander.
2856 (*load.<mode>.libgcc): New insn.
2857 (mov<mode>): Handle loads from non-generic AS.
2858 (movmemhi): Ditto. Propagate address space information to newly
2860 (movqi_insn, *movhi, *movpsi, *movsi, *movsf): Change predicate #1
2861 to nox_general_operand.
2862 (ashrqi3, ashrhi3, ashrsi3): Change predicate #1 to
2863 nop_general_operand.
2864 (ashlqi3, *ashlqi3, ashlhi3, ashlsi3): Ditto.
2865 (lshrqi3, *lshrqi3, lshrhi3, lshrsi3): Ditto.
2866 (split-lpmx): New split.
2867 (*ashlhi3_const, *ashlsi3_const, *ashrhi3_const, *ashrsi3_const,
2868 *lshrhi3_const, *lshrsi3_const): Indent, unquote C.
2870 2011-11-15 Maxim Kuvyrkov <maxim@codesourcery.com>
2872 * ipa-cp.c (ipa_value_from_jfunc): Make global.
2873 (ipa_cst_from_jfunc): Remove, use ipa_value_from_jfunc instead.
2874 (get_indirect_edge_target): Rename, make global.
2875 (devirtualization_time_bonus, estimate_local_effects,)
2876 (ipcp_discover_new_direct_edges): Update.
2877 * ipa-inline-analysis.c (evaluate_conditions_for_edge):
2878 Generalize to also handle types. Rename to ...
2879 (evaluate_properties_for_edge): Use instead of
2880 evaluate_conditions_for_edge.
2881 (estimate_edge_devirt_benefit): New function.
2882 (estimate_calls_size_and_time): Use it.
2883 (estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,)
2884 (inline_merge_summary): Update.
2885 (do_estimate_edge_time, do_estimate_edge_growth): Update. Calculate
2886 parameter information at the call site and pass it on to subroutines.
2887 * tree-inline.c (estimate_num_insns): Distinguish between direct and
2889 (init_inline_once): Set size and time costs or indirect calls.
2890 * tree-inline.h (eni_weights): Add indirect_call_cost.
2892 2011-11-15 Tom de Vries <tom@codesourcery.com>
2894 PR tree-optimization/51005
2895 * tree-ssa-tail-merge.c (delete_basic_block_same_succ): Rename to
2896 mark_basic_block_deleted.
2897 (update_worklist): Inline purge_bbs.
2898 (purge_bbs, unlink_virtual_phi, update_vuses, vop_at_entry)
2899 (delete_block_update_dominator_info): Remove.
2900 (replace_block_by): Remove update_vops parameter. Partially evaluate
2901 for update_vops == false.
2902 (apply_clusters): Remove update_vops parameter. Remove update_vops
2903 argument in replace_block_by call.
2904 (update_debug_stmts): Remove MAY_HAVE_DEBUG_STMTS test.
2905 (tail_merge_optimize): Remove update_vops argument to apply_clusters.
2906 Remove call to purge_bbs. Add calls to calculate_dominance_info and
2907 free_dominance_info. Add MAY_HAVE_DEBUG_STMTS before calling
2908 update_debug_stmts. Mark vop var for renaming, if necessary.
2910 2011-11-15 Bernd Schmidt <bernds@codesourcery.com>
2912 PR rtl-optimization/51051
2913 * cfgrtl.c (cfg_layout_can_merge_blocks_p): Return FALSE if the
2914 move would cause fallthrough into the exit block.
2916 2011-11-14 Richard Henderson <rth@redhat.com>
2918 * config/rs6000/rs6000.c (emit_load_locked): Assert the mode is
2920 (emit_store_conditional): Likewise.
2921 (rs6000_pre_atomic_barrier, rs6000_post_atomic_barrier): New.
2922 (rs6000_adjust_atomic_subword): New.
2923 (rs6000_mask_atomic_subword, rs6000_finish_atomic_subword): New.
2924 (rs6000_expand_atomic_op): Rename from rs6000_emit_sync; rewrite
2925 for pre-reload expansion.
2926 (rs6000_split_compare_and_swap, rs6000_split_compare_and_swapqhi,
2927 rs6000_expand_compare_and_swapqhi): Merge into ...
2928 (rs6000_expand_atomic_compare_and_swap): ... here. New function.
2929 rs6000_split_lock_test_and_set; expand immediately. Handle
2931 * config/rs6000/rs6000.md (UNSPEC_LWSYNC): Move and rename
2932 from UNSPECV_LWSYNC.
2933 * config/rs6000/sync.md (fetchopsi_constr, fetchopdi_constr): Remove.
2934 (mem_thread_fence): New.
2935 (hwsync): Rename from memory_barrier.
2936 (*hwsync): Rename from *sync_internal.
2937 (lwsync, *lwsync): Mirror hwsync implementation.
2938 (isync): Don't reference memory.
2940 (atomic_load<INT>, atomic_store<INT>): New.
2941 (ATOMIC): New mode iterator.
2942 (load_locked<ATOMIC>): Rename from load_locked_<GPR>.
2943 (store_conditional<ATOMIC>): Rename from store_conditional_<GPR>.
2944 (sync_compare_and_swap<GPR>): Remove.
2945 (sync_compare_and_swaphi, sync_compare_and_swapqi): Remove.
2946 (sync_compare_and_swapqhi_internal): Remove.
2947 (sync_lock_test_and_set<GPR>): Remove.
2948 (sync_<FETCHOP><INT1>): Remove.
2949 (*sync_<FETCHOP>si_internal, *sync_<FETCHOP>di_internal): Remove.
2950 (sync_nand<INT1>, *sync_nand<GPR>_internal): Remove.
2951 (sync_old_<FETCHOP><GPR>): Remove.
2952 (*sync_old_<FETCHOP>si_internal): Remove.
2953 (*sync_old_<FETCHOP>di_internal): Remove.
2954 (sync_old_nand<INT1>): Remove.
2955 (*sync_old_nand<GPR>_internal): Remove.
2956 (sync_new_<FETCHOP><GPR>): Remove.
2957 (*sync_new_<FETCHOP>si_internal): Remove.
2958 (*sync_new_<FETCHOP>di_internal): Remove.
2959 (sync_new_nand<INT1>): Remove.
2960 (*sync_new_nand<GPR>_internal): Remove.
2961 (*atomic_andsi, *atomic_anddi): Remove.
2962 (*sync_addshort_internal, *sync_subshort_internal): Remove.
2963 (*sync_andsi_internal, *sync_boolsi_internal): Remove.
2964 (*sync_boolcshort_internal): Remove.
2965 (sync_lock_release<INT1>): Remove.
2966 (atomic_compare_and_swap<INT1>): New.
2967 (atomic_exchange<INT1>): New.
2968 (atomic_<FETCHOP><INT1>, atomic_nand<INT1>): New.
2969 (atomic_fetch_<FETCHOP><INT1>, atomic_fetch_nand<INT1>): New.
2970 (atomic_<FETCHOP>_fetch<INT1>, atomic_nand_fetch<INT1>): New.
2972 2011-11-14 Uros Bizjak <ubizjak@gmail.com>
2974 * config/i386/sse.md (round<mode>2): Use register_operand for
2975 operand 1 predicate.
2976 (round<mode>2_sfix): Ditto.
2977 (round<mode>2_vec_pack_sfix): Ditto for operand 1 and operand 2.
2979 2011-11-14 Nathan Sidwell <nathan@acm.org>
2981 * gcov.c (canonicalize_name): Protect use of S_ISLNK.
2983 2011-11-14 Jan Hubicka <jh@suse.cz>
2986 * config/i386/i386.c (core cost model): Correct pasto.
2988 2011-11-14 Uros Bizjak <ubizjak@gmail.com>
2990 * config/i386/sse.md (round<mode>2_sfix): New expander.
2991 (round<mode>2_vec_pack_sfix): Ditto.
2992 (<sse4_1>_round<ssemodesuffix>_sfix<avxsizesuffix>): Ditto.
2993 (<sse4_1>_round<ssemodesuffix>_vec_pack_sfix<avxsizesuffix>): Ditto.
2994 * config/i386/builtin-types.def (V4SI_FTYPE_V4SF_ROUND,
2995 V8SI_FTYPE_V8SF_ROUND, V4SI_FTYPE_V2DF_V2DF_ROUND,
2996 V8SI_FTYPE_V4DF_V4DF_ROUND): New builtin types.
2997 * config/i386/i386.c (ix86_builtins): Add
2998 IX86_BUILTIN_{FLOORPD,CEILPD,ROUNDPD_AZ}_VEC_PACK_SFIX{,256} and
2999 IX86_BUILTIN_{FLOORPS,CEILPS,ROUNDPS_AZ}_SFIX{,256} defines.
3000 (bdesc_args): Add __builtin_ia32_{floorpd,ceilpd}_vec_pack_sfix{,256},
3001 __builtin_ia32_roundpd_az_vec_pack_sfix{,256},
3002 __builtin_ia32_{floorps,ceilps}_sfix{,256}and
3003 __builtin_ia32_roundps_az_sfix{,256} descriptions.
3004 (ix86_expand_sse_round_vec_pack_sfix): New.
3005 (ix86_expand_args_builtin): Handle V4SI_FTYPE_V4SF_ROUND,
3006 V8SI_FTYPE_V8SF_ROUND, V4SI_FTYPE_V2DF_V2DF_ROUND and
3007 V8SI_FTYPE_V4DF_V4DF_ROUND types. Check last argument of
3008 CODE_FOR_sse4_1_roundpd_vec_pack_sfix, CODE_FOR_sse4_1_roundps_sfix,
3009 CODE_FOR_avx_roundpd_vec_pack_sfix256 and CODE_FOR_avx_roundps_sfix256.
3010 (ix86_builtin_vectorized_function): Handle
3011 BUILT_IN_{I,L,LL}FLOOR{,F}, BUILT_IN_{I,L,LL}CEIL{,F} and
3012 BUILT_IN_{I,L,LL}ROUND{,F}
3014 2011-11-14 Jan Hubicka <jh@suse.cz>
3017 * cgraph.h (varpool_externally_visible_p): Declare.
3018 (varpool_add_new_variable): Declare.
3019 * tree-emultls.c (get_emutls_init_templ_addr,
3020 new_emutls_decl): Use varpool_add_new_variable.
3021 * ipa.c (varpool_externally_visible_p): Export.
3022 * varpool.c (varpool_add_new_variable): New function.
3024 2011-11-14 Michael Zolotukhin <michael.v.zolotukhin@gmail.com>
3025 Jan Hubicka <jh@suse.cz>
3027 * config/i386/i386.h (processor_costs): Add second dimension to
3028 stringop_algs array.
3029 * config/i386/i386.c (cost models): Initialize second dimension of
3030 stringop_algs arrays.
3031 (core_cost): New costs based on generic64 costs with updated stringop
3033 (promote_duplicated_reg): Add support for vector modes, add
3035 (promote_duplicated_reg_to_size): Likewise.
3036 (processor_target): Set core costs for core variants.
3037 (expand_set_or_movmem_via_loop_with_iter): New function.
3038 (expand_set_or_movmem_via_loop): Enable reuse of the same iters in
3039 different loops, produced by this function.
3040 (emit_strset): New function.
3041 (expand_movmem_epilogue): Add epilogue generation for bigger sizes,
3042 use SSE-moves where possible.
3043 (expand_setmem_epilogue): Likewise.
3044 (expand_movmem_prologue): Likewise for prologue.
3045 (expand_setmem_prologue): Likewise.
3046 (expand_constant_movmem_prologue): Likewise.
3047 (expand_constant_setmem_prologue): Likewise.
3048 (decide_alg): Add new argument align_unknown. Fix algorithm of
3049 strategy selection if TARGET_INLINE_ALL_STRINGOPS is set; Skip sse_loop
3050 (decide_alignment): Update desired alignment according to chosen move
3052 (ix86_expand_movmem): Change unrolled_loop strategy to use SSE-moves.
3053 (ix86_expand_setmem): Likewise.
3054 (ix86_slow_unaligned_access): Implementation of new hook
3055 slow_unaligned_access.
3056 * config/i386/i386.md (strset): Enable half-SSE moves.
3057 * config/i386/sse.md (vec_dupv4si): Add expand for vec_dupv4si.
3058 (vec_dupv2di): Add expand for vec_dupv2di.
3060 2011-11-14 Dimitrios Apostolou <jimis@gmx.net>
3064 * config/elfos.h (TARGET_ASM_INTERNAL_LABEL): Remove.
3065 * varasm.c (default_elf_internal_label): Remove.
3067 2011-11-14 Kai Tietz <ktietz@redhat.com>
3069 * gcov.c (generate_results): Add missing semicolon and correct indent.
3071 2011-11-14 Ira Rosen <ira.rosen@linaro.org>
3074 * tree-vect-stmts.c (vectorizable_condition): Initialize comp_vectype.
3076 2011-11-14 Mingjie Xing <mingjie.xing@gmail.com>
3078 * doc/invoke.texi (Wunused-result): Change @pxref{Variable Attributes}
3079 to @pxref{Function Attributes}.
3081 2011-11-13 Oleg Endo <oleg.endo@t-online.de>
3084 * config/sh/sh.h (IS_LITTLE_ENDIAN_OPTION, UNSUPPORTED_SH2A):
3086 (DRIVER_SELF_SPECS): Use new macros to filter out unsupported options
3087 taking the default configuration into account.
3089 2011-11-13 Jonathan Wakely <jwakely.gcc@gmail.com>
3091 * doc/install.texi (Specific): Fix anchor for
3092 x86_64-*-solaris2.1[0-9]*.
3094 2011-11-13 Nathan Sidwell <nathan@acm.org>
3096 * gcov.c (source_prefix, source_length): New globals.
3097 (flag_relative_only): Likewise.
3098 (print_usage, options, process_args): Update.
3099 (generate_results): Use coverage.name, check
3100 flag_relative_only. Adjust messages.
3101 (find_source): Check source_prefix.
3102 (output_lines): Use coverage.name, adjust messages.
3103 * doc/gcov.texi (Invoking Gcov): Document new options.
3105 2011-11-12 Jason Merrill <jason@redhat.com>
3108 * gimplify.c (gimplify_target_expr): Add a clobber to the cleanup.
3109 (gimplify_modify_expr): Don't try to simplify it.
3111 2011-11-12 Dimitrios Apostolou <jimis@gmx.net>
3114 * config/elfos.h (STRING_ASM_OP): Define.
3115 * varasm.c (default_elf_asm_output_limited_string): Use it.
3118 * gcc/configure.ac: Check for stpcpy declaration.
3119 * system.h: Declare it if not.
3120 * config.in, configure: Regenerate.
3122 2011-11-12 Richard Henderson <rth@redhat.com>
3124 * config/rs6000/rs6000.md (fix_trunc<SFDF>si2_stfiwx): Use
3125 nonimmediate_operand for the destination.
3126 (fixuns_trunc<SFDF>si2_stfiwx): Likewise.
3128 * builtins.c (expand_builtin_compare_and_swap): If target is const0,
3129 don't pass the target to expand_atomic_compare_and_swap.
3130 (expand_builtin_atomic_compare_exchange): Likewise.
3132 * config/sh/linux.h (TARGET_INIT_LIBFUNCS): New.
3133 * config/sh/sh.c (sh_init_sync_libfuncs): New.
3135 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): New.
3136 * config/pa/pa.h (TARGET_SYNC_LIBCALL): New default.
3137 * config/pa/pa.c (pa_init_libfuncs): Use init_sync_libfuncs.
3139 2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
3142 * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
3143 Only expand a symbol ref. into an access when the entity is defined
3146 2011-11-12 Jan Hubicka <jh@suse.cz>
3149 * cgraphunit.c (output_weakrefs): Output really only weakrefs.
3151 2011-11-12 Nathan Sidwell <nathan@acm.org>
3153 * gcov.c (struct name_map): New.
3154 (names, n_names, a_names): New global vars.
3155 (print_usage): Adjust usage.
3156 (generate_results): Canonicalize main file name.
3157 (release_structures): Adjust.
3158 (name_search, name_sort): New callbacks.
3159 (find_source): Look for and create a canonical name.
3160 (canonicalize_name): New.
3161 (make_gcov_file_name): Reimplement and fix mangling.
3163 * doc/gcov.texi: Update documentation about path preservation.
3165 2011-11-11 David S. Miller <davem@davemloft.net>
3167 * config/sparc/linux.h (ASM_GENERATE_INTERNAL_LABEL): Delete.
3168 * config/sparc/linux64.h (ASM_GENERATE_INTERNAL_LABEL): Delete.
3170 2011-11-11 Jakub Jelinek <jakub@redhat.com>
3172 * config/i386/i386-protos.h (ix86_maybe_emit_epilogue_vzeroupper):
3174 * config/i386/i386.c (ix86_maybe_emit_epilogue_vzeroupper): New
3176 (ix86_expand_epilogue): Use it.
3177 * config/i386/i386.md (return, simple_return): Call it in the
3180 PR tree-optimization/51091
3181 * tree-stdarg.c (execute_optimize_stdarg): Ignore TREE_CLOBBER_P
3182 rhs also in the va_list_simple_ptr case.
3184 PR tree-optimization/51058
3185 * tree-vect-slp.c (vect_remove_slp_scalar_calls): New function.
3186 (vect_schedule_slp): Call it.
3187 * tree-vect-stmts.c (vectorizable_call): If slp_node != NULL,
3188 don't replace scalar calls with setting of their lhs to zero here.
3190 PR tree-optimization/51074
3191 * fold-const.c (vec_cst_ctor_to_array, fold_vec_perm): New functions.
3192 (fold_binary_loc): Handle VEC_EXTRACT_EVEN_EXPR,
3193 VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR and
3194 VEC_INTERLEAVE_LOW_EXPR with VECTOR_CST or CONSTRUCTOR operands.
3195 (fold_ternary_loc): Handle VEC_PERM_EXPR with VECTOR_CST or
3196 CONSTRUCTOR operands.
3197 * tree-ssa-propagate.c (valid_gimple_rhs_p): Handle ternary
3199 * tree-vect-generic.c (lower_vec_perm): Mask sel_int elements
3200 to 0 .. 2 * elements - 1.
3202 2011-11-11 Richard Henderson <rth@redhat.com>
3204 * gimple-pretty-print.c (dump_gimple_omp_atomic_load): Dump needed.
3205 (dump_gimple_omp_atomic_store): Likewise.
3206 * optabs.c (can_atomic_exchange_p): New.
3207 * optabs.h (can_atomic_exchange_p): Declare.
3208 * omp-low.c (expand_omp_atomic_load): Implement.
3209 (expand_omp_atomic_store): Likewise.
3210 (expand_omp_atomic): Update for new arguments to load/store.
3212 2011-11-11 Eric Botcazou <ebotcazou@adacore.com>
3214 * cprop.c: Adjust outdated comments throughout.
3215 (hash_scan_set): Rename PAT parameter into SET.
3216 (cprop_pavloc): Rename into...
3217 (cprop_avloc): ...this.
3218 (cprop_absaltered): Rename into...
3219 (cprop_kill): ...this.
3220 (alloc_cprop_mem): Adjust for above renaming.
3221 (free_cprop_mem): Likewise.
3222 (compute_cprop_data): Likewise.
3223 (compute_local_properties): Rename TRANSP parameter into KILL and
3224 adjust throughout. Rework comments.
3225 (try_replace_reg): Fix long line.
3226 (cprop_jump): Likewise.
3227 (constprop_register): Fix prototype and take INSN last.
3228 (cprop_insn): Adjust calls to above function. Fix long lines.
3229 (bypass_block): Likewise.
3230 (one_cprop_pass): Likewise.
3232 2011-11-11 Uros Bizjak <ubizjak@gmail.com>
3234 * config/alpha/elf.h (ELF_ASCII_ESCAPES): Rename from ESCAPES.
3235 (ELF_STRING_LIMIT): Rename from STRING_LIMIT.
3237 2011-11-11 Jason Merrill <jason@redhat.com>
3239 * varasm.c (default_elf_asm_output_limited_string): #ifdef
3241 (default_elf_asm_output_ascii): Likewise.
3243 2011-11-11 Uros Bizjak <ubizjak@gmail.com>
3246 * config/i386/constraints.md (j): New address constraint.
3247 * config/i386/predicates.md (lea_address_operand): Redefine as
3249 * config/i386/i386.md (*lea_3_zext): Use "j" constraint for operand 1.
3250 (*lea_4_zext): Ditto.
3252 2011-11-11 David S. Miller <davem@davemloft.net>
3255 2011-11-05 David S. Miller <davem@davemloft.net>
3257 * config/sparc/sparc.md (UNSPEC_SHORT_LOAD): New unspec.
3258 (zero-extend_v8qi_vis, zero_extend_v4hi_vis): New expanders.
3259 (*zero_extend_v8qi_<P:mode>_insn,
3260 *zero_extend_v4hi_<P:mode>_insn): New insns.
3261 * config/sparc/sparc.c (vector_init_move_words,
3262 vector_init_prepare_elts, sparc_expand_vector_init_vis2,
3263 sparc_expand_vector_init_vis1): New functions.
3264 (vector_init_bshuffle): Rewrite to handle more cases and make use
3265 of locs[] array prepared by vector_init_prepare_elts.
3266 (vector_init_fpmerge, vector_init_faligndata): Delete.
3267 (sparc_expand_vector_init): Rewrite using new infrastructure.
3269 2011-11-11 Jakub Jelinek <jakub@redhat.com>
3271 * opts-common.c (generate_canonical_option): Free opt_text
3272 it it has been allocated here and not stored anywhere.
3274 * tree-vect-slp.c (vect_free_slp_tree): Also free SLP_TREE_CHILDREN
3276 (vect_create_new_slp_node): Don't allocate node before checking stmt
3278 (vect_free_oprnd_info): Remove FREE_DEF_STMTS argument, always
3279 free def_stmts vectors and additionally free oprnd_info.
3280 (vect_build_slp_tree): Adjust callers. Call it even if
3281 stop_recursion. If vect_create_new_slp_node or
3282 vect_build_slp_tree fails, properly handle freeing memory.
3283 If it succeeded, clear def_stmts in oprnd_info.
3285 2011-11-11 Dimitrios Apostolou <jimis@gmx.net>
3287 * defaults.h (ASM_OUTPUT_LABEL, ASM_OUTPUT_INTERNAL_LABEL): Expand on
3288 multiple lines for readability.
3289 * output.h (fprint_whex, fprint_w, fprint_ul, sprint_ul): Declare.
3290 (ASM_OUTPUT_LABELREF): Call fputs instead of asm_fprintf.
3291 * dwarf2asm.c (dw2_assemble_integer, dw2_asm_output_data,
3292 dw2_asm_data_uleb128, dw2_asm_delta_uleb128,
3293 dw2_asm_delta_sleb128): Convert fprintf calls to the new functions.
3294 * dwarf2out.c (dwarf2out_source_line): Call fprint_ul instead of
3296 * final.c (fprint_whex, fprint_w, fprint_ul, sprint_ul): New functions
3297 serving as fast replacements for fprintf integer to string conversions.
3298 (sprint_ul_rev): Internal helper for the above.
3299 (output_addr_const) <CONST_INT>: Don't use fprintf.
3300 * varasm.c: Fix some whitespace inconsistencies.
3301 (default_elf_asm_output_limited_string): New.
3302 (default_elf_asm_output_ascii): Likewise.
3303 (default_elf_internal_label): Likewise.
3304 * config/elfos.h (ASM_GENERATE_INTERNAL_LABEL): Use sprint_ul and
3305 stpcpy instead of sprintf.
3306 (TARGET_ASM_INTERNAL_LABEL): Define as default_elf_internal_label.
3307 (ELF_ASCII_ESCAPES, ELF_STRING_LIMIT): Rename from old ESCAPES and
3308 STRING_LIMIT macros.
3309 (ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII): Call functions that
3310 provide the same functionality.
3311 * config/i386/i386.c (print_reg): Call fprint_ul instead of fprintf.
3313 2011-11-10 Andrew MacLeod <amacleod@redhat.com>
3315 * doc/extend.texi: Document __atomic_test_and_set and __atomic_clear.
3317 2011-11-10 Andrew MacLeod <amacleod@redhat.com>
3320 * builtins.c (expand_builtin_atomic_clear): New. Expand atomic_clear.
3321 (expand_builtin_atomic_test_and_set): New. Expand atomic test_and_set.
3322 (expand_builtin): Add cases for test_and_set and clear.
3323 * sync-builtins.def (BUILT_IN_ATOMIC_TEST_AND_SET): New.
3324 (BUILT_IN_ATOMIC_CLEAR): New.
3326 2011-11-10 Roberto Agostino Vitillo <ravitillo@lbl.gov>
3329 * dwarf2out.c (set_cur_line_info_table): Restore the last is_stmt
3330 value in the current line table.
3332 2011-11-10 Nathan Sidwell <nathan@acm.org>
3334 * gcov.c (struct function_info): Make src an index, not a pointer.
3335 (struct source_info): Remove index and next source fields.
3336 (fn_end): New static var.
3337 (sources_index): Remove.
3338 (sources): Now a pointer to an array, not a list.
3339 (n_sources, a_sources): New.
3340 (process_file): Adjust for changes to read_graph_file. Insert
3341 functions into source lists and check line numbers here.
3342 (generate_results): Only allocate lines for sources with
3343 contents. Adjust for source array.
3344 (release_structures): Likewise.
3345 (find_source): Return source index, adjust for source array.
3346 (read_graph_file): Return function list. Don't insert into source
3348 (read_count_file): Take list of functions.
3349 (solve_flow_graph): Reverse the arc lists here.
3350 (add_line_counts): Adjust for source array.
3352 2011-11-10 Jakub Jelinek <jakub@redhat.com>
3355 * tree-object-size.c (addr_object_size): Check TREE_CODE of
3356 MEM_REF's operand rather than code of the MEM_REF itself.
3358 2011-11-10 Andrew MacLeod <amacleod@redhat.com>
3360 PR rtl-optimization/51040
3361 * optabs.c (expand_atomic_fetch_op): Patchup code for NAND should
3362 be AND followed by NOT.
3363 * builtins.c (expand_builtin_atomic_fetch_op): Patchup code for NAND
3364 should be AND followed by NOT.
3366 2011-11-10 Jakub Jelinek <jakub@redhat.com>
3368 * vec.h (VEC_BASE): If base is at offset 0 in the structure,
3369 use &(P)->base even if P is NULL.
3371 PR rtl-optimization/51023
3372 * combine.c (simplify_comparison) <case SIGN_EXTEND>: Don't use
3373 val_signbit_known_clear_p for signed comparison narrowing
3374 optimization. Don't check for non-VOIDmode, use
3375 HWI_COMPUTABLE_MODE_P macro.
3376 <case ZERO_EXTEND>: Don't check for non-VOIDmode.
3377 Optimize even when const_op is equal to GET_MODE_MASK (mode),
3378 don't optimize if const_op is negative.
3380 2011-11-10 Richard Guenther <rguenther@suse.de>
3382 PR tree-optimization/51042
3383 * tree-ssa-pre.c (phi_translate_1): Avoid recursing on
3384 self-referential expressions. Refactor code to avoid duplication.
3386 2011-11-10 Richard Guenther <rguenther@suse.de>
3388 PR tree-optimization/51070
3389 * tree-loop-distribution.c (generate_builtin): Do not replace
3390 the loop with a builtin if the partition contains statements which
3391 results are used outside of the loop.
3392 (pass_loop_distribution): Verify and collect.
3394 2011-11-10 Richard Guenther <rguenther@suse.de>
3396 PR tree-optimization/51030
3397 * tree-ssa-phiopt.c (jump_function_from_stmt): New function.
3398 (value_replacement): Use it to handle trivial non-empty
3399 intermediate blocks.
3401 2011-11-10 Richard Guenther <rguenther@suse.de>
3404 * gimple.c (gimple_has_side_effects): Remove checking code
3405 that doesn't belong here.
3407 2011-11-10 Ira Rosen <ira.rosen@linaro.org>
3409 PR tree-optimization/51058
3410 * tree-vect-slp.c (vect_get_constant_vectors): Handle CALL_EXPR.
3412 2011-11-10 Jakub Jelinek <jakub@redhat.com>
3414 PR tree-optimization/51000
3415 * tree-vect-patterns.c (vect_recog_bool_pattern): If adding
3416 a pattern stmt for a bool store, adjust DR_STMT too.
3417 Don't handle bool conversions to single bit precision lhs.
3418 * tree-vect-stmts.c (vect_remove_stores): If next is a pattern
3419 stmt, remove its related stmt and free its stmt_vinfo.
3420 (free_stmt_vec_info): Free also pattern stmt's vinfo and
3421 pattern def stmt's vinfo.
3422 * tree-vect-loop.c (destroy_loop_vec_info): Don't try to
3423 free pattern stmt's vinfo here.
3424 (vect_transform_loop): When calling vect_remove_stores,
3425 do gsi_next first and don't call gsi_remove. If not strided
3426 store, free stmt vinfo for gsi_stmt (si) rather than stmt.
3428 2011-11-09 Jakub Jelinek <jakub@redhat.com>
3431 * config/i386/i386.c (expand_vec_perm_interleave2): If d->vmode is
3432 V4SImode, !TARGET_SSE2 and punpck[lh]* is needed, change dremap.vmode
3435 * function.h (requires_stack_frame_p): New prototype.
3436 * function.c (requires_stack_frame_p): No longer static.
3437 * config/i386/i386.c (ix86_finalize_stack_realign_flags): If
3438 stack_realign_fp was just a conservative guess for a function
3439 which doesn't use sp/fp/argp at all, clear frame_pointer_needed
3440 and stack realignment.
3442 2011-11-09 Paolo Carlini <paolo.carlini@oracle.com>
3444 PR preprocessor/51061
3445 * incpath.c (merge_include_chains): Make sure to not pass null
3446 pointers to free_path.