OSDN Git Service

Define PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO heuristic.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index e294679..a0ba83a 100644 (file)
@@ -1,6 +1,343 @@
+2010-05-17  Changpeng Fang  <changpeng.fang@amd.com>
+
+       * tree-ssa-loop-prefetch.c (PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO): New.
+       (schedule_prefetches): Do not generate a prefetch if the unroll factor
+       is far from what is required by the prefetch.
+
+2010-05-17  Jan Hubicka  <jh@suse.cz>
+
+       * ipa-cp.c (ipcp_update_callgraph): Use ipa_is_param_used.
+       (ipcp_estimate_growth): Likewise.
+       (ipcp_const_param_count): Likewise.
+       (ipcp_insert_stage): Likewise.
+       * ipa-prop.c (visit_load_for_mod_analysis): New function.
+       (visit_store_addr_for_mod_analysis): Set used flag.
+       (ipa_detect_param_modifications): Set used flag for SSE params;
+       update use of walk_stmt_load_store_addr_ops.
+       (ipa_print_node_params): Print used flag.
+       (ipa_write_node_info): Stream used flag.
+       (ipa_read_node_info): Likewise.
+       * ipa-prop.h (struct ipa_param_descriptor): Add used field.
+       (ipa_is_param_used): New function.
+       (lto_ipa_fixup_call_notes): Remove unused declaration.
+
+2010-05-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR target/44074
+       * configure.ac (HAVE_AS_IX86_REP_LOCK_PREFIX): New test.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * config/i386/i386.c (print_operand) <case ;>: Also print ; if
+       !HAVE_AS_IX86_REP_LOCK_PREFIX.
+       Don't emit whitespace.
+       * config/i386/i386.md (*rep_movdi_rex64): Use {%;} after rep.
+       (*rep_movsi): Likewise.
+       (*rep_movsi_rex64): Likewise.
+       (*rep_movqi): Likewise.
+       (*rep_movqi_rex64): Likewise.
+       (*rep_stosdi_rex64): Likewise.
+       (*rep_stossi): Likewise.
+       (*rep_stossi_rex64): Likewise.
+       (*rep_stosqi): Likewise.
+       (*rep_stosqi_rex64): Likewise.
+       (*cmpstrnqi_nz_1): Use {%;} after repz.
+       (*cmpstrnqi_nz_rex_1): Likewise.
+       (*cmpstrnqi_1): Likewise.
+       (*cmpstrnqi_rex_1): Likewise.
+       (*strlenqi_1): Use {%;} after repnz.
+       (*strlenqi_rex_1): Likewise.
+       * config/i386/sync.md (memory_barrier_nosse): Replace {%;| } by {%;} .
+       (*sync_compare_and_swap<mode>): Likewise.
+       (sync_double_compare_and_swap<mode>): Likewise.
+       (*sync_double_compare_and_swapdi_pic): Likewise.
+       (sync_old_add<mode>): Likewise.
+       (sync_add<mode>): Likewise.
+       (sync_sub<mode>): Likewise.
+       (sync_<code><mode>): Likewise.
+
+2010-05-17  Martin Jambor  <mjambor@suse.cz>
+
+       * cgraph.h (cgraph_indirect_call_info): New fields anc_offset,
+       otr_token and polymorphic.
+       * cgraph.c (cgraph_create_indirect_edge): Inilialize the above fields.
+       (cgraph_clone_edge): Copy the above fields.
+       * tree.c (get_binfo_at_offset): New function.
+       * tree.h (get_binfo_at_offset): Declare.
+       * ipa-prop.h (enum jump_func_type): Added known_type jump function
+       type, reordered items, updated comments.
+       (union jump_func_value): Added base_type field, reordered fields.
+       (enum ipa_lattice_type): Moved down in the file.
+       (struct ipa_param_descriptor): New field polymorphic.
+       (ipa_is_param_polymorphic): New function.
+       * ipa-prop.c: Include gimple.h and gimple-fold.h.
+       (ipa_print_node_jump_functions): Print known type jump functions.
+       (compute_complex_pass_through): Renamed to...
+       (compute_complex_assign_jump_func): this.
+       (compute_complex_ancestor_jump_func): New function.
+       (compute_known_type_jump_func): Likewise.
+       (compute_scalar_jump_functions): Create known type and complex ancestor
+       jump functions.
+       (ipa_note_param_call): New parameter polymorphic, set the corresponding
+       flag in the call note accordingly.
+       (ipa_analyze_call_uses): Renamed to...
+       (ipa_analyze_indirect_call_uses): this.  New parameter target, define
+       variable var only in the block where it is used.
+       (ipa_analyze_virtual_call_uses): New function.
+       (ipa_analyze_call_uses): Likewise.
+       (combine_known_type_and_ancestor_jfs): Likewise.
+       (update_jump_functions_after_inlining): Implemented handling of a
+       number of new jump function types combination.
+       (print_edge_addition_message): Removed.
+       (make_edge_direct_to_target): New function.
+       (try_make_edge_direct_simple_call): Likewise.
+       (try_make_edge_direct_virtual_call): Likewise.
+       (update_call_notes_after_inlining): Renamed to...
+       (update_indirect_edges_after_inlining): this.  Moved edge creation for
+       indirect calls to try_make_edge_direct_simple_call, also calls
+       try_make_edge_direct_virtual_call for virtual calls.
+       (ipa_print_node_params): Changed the header message.
+       (ipa_write_jump_function): Stream also known type jump functions.
+       (ipa_read_jump_function): Likewise.
+       (ipa_write_indirect_edge_info): Stream new fields in
+       cgraph_indirect_call_info.
+       (ipa_read_indirect_edge_info): Likewise.
+       * Makefile.in (ipa-prop.o): Add dependency to GIMPLE_H and
+       GIMPLE_FOLD_H.
+
+2010-05-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * config/i386/sol2.h (TARGET_SUN_TLS): Remove duplicate definition.
+
+2010-05-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (CALL_EXPR_ARGS): Delete.
+       (call_expr_arglist): Delete.
+       * tree.c (call_expr_arglist): Delete.
+       * builtins.c (fold_call_expr): Pass the whole CALL_EXPR to
+       targetm.fold_builtin.
+       * config/alpha/alpha.c (alpha_fold_builtin): Rename arglist parameter.
+       Rewrite iteration to work on call_expr_nargs rather than TREE_CHAIN.
+       * config/picochip/picochip.c (picochip_expand_builtin_2op): Rename
+       arglist parameter.  Use CALL_EXPR_ARG.
+       (picochip_expand_builtin_3op): Likewise.
+       (picochip_expand_builtin_2opvoid): Likewise.
+       (picochip_expand_array_get): Likewise.
+       (picochip_expand_array_put): Likewise.
+       (picochip_expand_array_testport): Likewise.
+       (picochip_expand_builtin): Don't call CALL_EXPR_ARGS.  Pass exp
+       rather than arglist.
+       * config/rx/rx.c (rx_expand_builtin): Call call_expr_nargs instead of
+       CALL_EXPR_ARGS.
+       * config/sparc/sparc.c (sparc_fold_builtin): Use CALL_EXPR_ARG rather
+       than TREE_VALUE and TREE_CHAIN.
+       * config/xtensa/xtensa.c (xtensa_fold_builtin): Likewise.
+       * doc/tm.texi (TARGET_FOLD_BUILTIN): Pass CALL_EXPR tree instead of
+       the arglist.
+
+2010-05-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR bootstrap/42347
+       * cfglayout.c (fixup_reorder_chain): Allow returnjump_p
+       to have no fallthru edge.
+
+       PR middle-end/44102
+       * cfgcleanup.c (try_optimize_cfg): When removing trivially empty
+       bb with no successors, move footer whenever in IR_RTL_CFGLAYOUT
+       mode, not just when CLEANUP_CFGLAYOUT, and when in IR_RTL_CFGRTL
+       add BARRIER after previous bb if needed.
+
+2010-05-17  Nathan Froyd  <froydnj@codesourcery.com>
+       * tree.c (build_function_type_list_1): Remove bogus assert condition.
+2010-05-17  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Delete
+       unnecessary prototype.  Replace copy_r12 and copy_r11 flag params
+       with copy_reg rtx param.
+       (rs6000_emit_prologue): Update rs6000_emit_allocate_stack calls.
+       Correct cases where code for ABI_V4 did not initialise the reg
+       used to access frame.  Also leave frame_reg_rtx as sp for large
+       frames that save no regs.
+
+2010-05-17  Martin Jambor  <mjambor@suse.cz>
+
+       PR middle-end/44133
+       * tree-sra.c (create_access_replacement): New parameter rename, mark
+       the replaement for renaming only when it is true.
+       (get_access_replacement): Pass true in the rename parameter of
+       create_access_replacement.
+       (get_unrenamed_access_replacement): New function.
+       (replace_uses_with_default_def_ssa_name): New parameter racc, get the
+       replacement declaration from it.
+
+2010-05-17  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * function.c (try_fit_stack_local, add_frame_space): New static
+       functions.
+       (assign_stack_local_1): Use them.  Look for opportunities to use
+       space previously wasted on alignment.
+       * function.h (struct frame_space): New.
+       (struct rtl_data): Add FRAME_SPACE_LIST member.
+       * reload1.c (something_was_spilled): New static variable.
+       (alter_reg): Set it.
+       (reload): Test it in addition to testing if the frame size changed.
+
+2010-05-17  Christian Borntraeger  <borntraeger@de.ibm.com>
+
+        * config/s390/s390.c: Define sane prefetch settings and activate
+        flag_prefetch_loop_arrays on -O3.
+        * config/s390/s390.h: Declare that read can use write prefetch.
+
+2010-05-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * lto-streamer-out.c (lto_output): Fix --enable-checking=release
+       build.
+
+2010-05-16  Jan Hubicka  <jh@suse.cz>
+
+       * ipa-cp.c (ipcp_versionable_function_p): Walk cgraph edges instead of
+       function body; do not check stdarg field of struct function.
+
+2010-05-16  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (dump_cgraph_node): Dump versionable flag.
+       * cgraph.h (cgraph_local_info): Add versionable flag.
+       * ipa-cp.c (ipcp_analyze_node): Set versionable flag.
+       (ipcp_versionable_function_p): Use it.
+       * lto-cgraph.c (lto_output_node, input_overwrite_node): Stream
+       versionable flag.
+
+2010-05-16  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (cgraph_clone_node): Take decl argument and insert
+       clone into hash when it is different from orig.
+       (cgraph_create_virtual_clone): Update use of cgraph_clone_node.
+       * cgraph.h (cgraph_clone_node): Update prototype.
+       * lto-cgrpah.c (lto_cgraph_encoder_new): Create body map.
+       (lto_cgraph_encoder_delete): Delete body map.
+       (lto_cgraph_encoder_size): Move to header.
+       (lto_cgraph_encoder_encode_body_p,
+       lto_set_cgraph_encoder_encode_body): New.
+       (lto_output_node): Do not take written_decls argument; output clone_of
+       pointer.
+       (add_node_to): Add include_body_argument; call
+       lto_set_cgraph_encoder_encode_body on master of the clone.
+       (add_references): Update use of add_node_to.
+       (compute_ltrans_boundary): Likewise.
+       (output_cgraph): Do not create written_decls bitmap.
+       (input_node): Take nodes argument; stream in clone_of correctly.
+       (input_cgraph_1): Update use of input_node.
+       * lto-streamer-out.c (lto_output): Use encoder info to decide
+       what bodies to output.
+       * ipa-inline.c (cgraph_clone_inlined_nodes,
+       cgraph_decide_recursive_inlining): Update call of cgraph_clone_node.
+       * lto-streamer.h (lto_cgraph_encoder_d): Add body.
+       (lto_cgraph_encoder_size): Define here.
+       (lto_cgraph_encoder_encode_body_p, lto_varpool_encoder_encode_body_p):
+       Declare.
+
+2010-05-16  Richard Guenther  <rguenther@suse.de>
+
+       * doc/invoke.texi (-fipa-struct-reorg): Do not mention
+       -fipa-type-escape.
+       * ipa-type-escape.c (gate_type_escape_vars): Run when
+       -fipa-struct-reorg runs.
+       * opts.c (decode_options): Do not unset flag_ipa_type_escape.
+       * common.opt (fipa-type-escape): Remove.
+
+2010-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * opts.c (handle_option): Call into LTO streamer only if ENABLE_LTO.
+       (decode_options): Likewise.
+       * Makefile.in (opts.o): Add dependency on LTO_STREAMER_H.
+
+2010-05-16  Jan Hubicka  <jh@suse.cz>
+
+       * ipa.c (function_and_variable_visibility): Also bring local all
+       aliases.
+
+2010-05-16  Richard Guenther  <rguenther@suse.de>
+
+       * alias.c (nonoverlapping_memrefs_p): Remove use of
+       IPA type-escape information.
+
+2010-05-16  Joseph Myers  <joseph@codesourcery.com>
+
+       * c-common.c (c_common_reswords): Add _Static_assert for C.
+       * c-parser.c (c_token_starts_declaration,
+       c_parser_next_token_starts_declaration,
+       c_parser_static_assert_declaration_no_semi,
+       c_parser_static_assert_declaration): New.
+       (c_parser_declaration_or_fndef): Add parameter static_assert_ok.
+       Handle static assertions if static_assert_ok.
+       (c_parser_external_declaration, c_parser_declaration_or_fndef,
+       c_parser_compound_statement_nostart, c_parser_label,
+       c_parser_for_statement, c_parser_objc_methodprotolist,
+       c_parser_omp_for_loop): All callers of
+       c_parser_declaration_or_fndef changed.
+       (c_parser_struct_declaration): Handle static assertions.
+       (c_parser_compound_statement_nostart): Use
+       c_parser_next_token_starts_declaration and
+       c_token_starts_declaration to detect start of declarations.
+       (c_parser_label, c_parser_for_statement, c_parser_omp_for_loop):
+       Likewise.
+
+2010-05-16  Anatoly Sokolov  <aesok@post.ru>
+
+       * config/mmix/mmix.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
+       LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Remove macros.
+       * config/mmix/mmix.c (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE,
+       TARGET_FUNCTION_VALUE_REGNO_P): Define.
+       (mmix_function_outgoing_value): Rename to...
+       (mmix_function_value): ...this. Make static. Add 'outgoing' argument.
+       (mmix_function_value_regno_p): Make static.
+       (mmix_libcall_value): New function.
+       * config/mmix/mmix-protos.h (mmix_function_outgoing_value,
+       mmix_function_value_regno_p): Remove declaration.
+
+2010-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.c (build_common_builtin_nodes): Always clear TREE_NOTHROW on
+       BUILT_IN_ALLOCA if stack checking is enabled.
+
+2010-05-16  Richard Guenther  <rguenther@suse.de>
+
+       * var-tracking.c (vars_copy_1): Inline ...
+       (vars_copy): ... here.  Use FOR_EACH_HTAB_ELEMENT.
+       (variable_union): Use FOR_EACH_HTAB_ELEMENT.  Merge asserts.
+       (variable_merge_over_cur): Adjust.  Merge asserts.
+       (variable_merge_over_src): Likewise.
+       (dataflow_set_merge): Use FOR_EACH_HTAB_ELEMENT.
+       (variable_post_merge_new_vals): Merge asserts.
+       (variable_post_merge_perm_vals): Likewise.
+       (find_mem_expr_in_1pdv): Likewise.
+       (dataflow_set_different_value): Remove.
+       (onepart_variable_different_p): Merge asserts.
+       (variable_different_p): Likewise.
+       (dataflow_set_different_1): Inline ...
+       (dataflow_set_different): ... here.  Use FOR_EACH_HTAB_ELEMENT.
+       (emit_notes_for_differences_1): Merge asserts.
+
+2010-05-16  Richard Guenther  <rguenther@suse.de>
+
+       * lto-symtab.c (lto_symtab_entry_hash): Use IDENTIFIER_HASH_VALUE.
+       * optabs.c (libfunc_decl_hash): Likewise.
+       * varasm.c (emutls_decl): Likewise.
+
+2010-05-16  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * c-decl.c: Don't include gimple.h.
+       (merge_decls): Do not copy gimple_body.
+
+2010-05-15  Jason Merrill  <jason@redhat.com>
+
+       * c.opt: Add -fnothrow-opt.
+
 2010-05-15  Jan Hubicka  <jh@suse.cz>
 
-       * ipa-prop.c (ipa_prop_read_section): Add sanity check that node is analyzed.
+       * ipa-prop.c (ipa_prop_read_section): Add sanity check that node is
+       analyzed.
        * passes.c (ipa_write_summaries): Write all analyzed nodes.
 
 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>