OSDN Git Service

2010-05-18 Vladimir Makarov <vmakarov@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 8fb04d5..631e7a4 100644 (file)
@@ -1,3 +1,902 @@
+2010-05-18  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/43332
+       * haifa-sched.c (setup_insn_max_reg_pressure): Check barrier.
+
+2010-05-18  Anatoly Sokolov  <aesok@post.ru>
+
+       * tree.h (build_int_cstu): Implement as static inline.
+       * tree.c (build_int_cstu): Remove function.
+       (double_int_to_tree, double_int_fits_to_tree_p): Handle size types as
+       sign extended.
+
+2010-05-18  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/44143
+       * lto-wrapper.c (verbose): New variable.  Initialize from -v.
+       (debug): Initialize from -save-temps.
+       (collect_execute): Print command-line when verbose.
+       (run_gcc): Always use COLLECT_GCC_OPTIONS.  Use fork_execute
+       for ltrans invocation.  Produce -dumpbase flag again.
+       (process_args): Remove.
+       (main): Simplify.
+       * collect2.c (maybe_run_lto_and_relink): Only pass object
+       files to lto-wrapper.
+       * gcc.c (LINK_COMMAND_SPEC): Likewise.
+
+2010-05-18  Jan Hubicka  <jh@suse.cz>
+
+       * opts.c (decode_options): Do not disable whopr at ipa_cp.
+       * ipa-prop.c (ipa_detect_param_modifications): Walk PHI nodes too.
+
+2010-05-18  Steven Bosscher  <steven@gcc.gnu.org>
+
+       PR lto/44184
+       * lto-streamer-out.c (output_gimple_stmt): Output number of labels
+       in a GIMPLE_ASM.
+       * lto-streamer-in.c (input_gimple_stmt): Read number of labels
+       in a GIMPLE_ASM.
+
+2010-05-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/41371
+       * var-tracking.c (find_loc_in_1pdv): Add a few checks from
+       rtx_equal_p inline.
+
+2010-05-18  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * config.gcc (powerpc-*-darwin*, powerpc64-*-darwin*): Add
+       lto-macho as lto_binary_reader.
+
+       * darwin.c (darwin_asm_named_section): Do not add assembler comment
+       after .section directive; just print it before the directive instead.
+
+2010-05-17  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (cgraph_create_virtual_clone): Only check
+       versionable_function_p when not in wpa and checking is enabled.
+       * cgraphunit.c (cgraph_materialize_all_clones): Stabilize after
+       there are no more functions to materialize.
+
+2010-05-17  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.h (struct ipa_replace_map): Add parm_num parameter.
+       * lto-cgraph.c (output_cgraph_opt_summary, input_cgraph_opt_summary):
+       New functions.
+       (output_cgraph): Call output_cgraph_opt_summary.
+       (input_cgrpah): Call input_cgraph_opt_summary.
+       (output_cgraph_opt_summary_p, output_node_opt_summary,
+       input_node_opt_summary, input_cgraph_opt_section): New functions.
+       * lto-section-in.c (lto_section_name): Add cgraphopt.
+       * tree-inline.c (tree_function_versioning): Handle parm_num.
+       * lto-streamer.c (lto_get_section_name): Handle cgraphopt.
+       * lto-streamer.h (lto_section_type): Add LTO_section_cgraph_opt_sum.
+
+2010-05-17  Changpeng Fang  <changpeng.fang@amd.com>
+
+       * doc/invoke.texi: Update documentation for min-insn-to-prefetch-ratio.
+       * tree-ssa-loop-prefetch.c (is_loop_prefetching_profitable): Also apply
+       the insn to prefetch ratio heuristic to loops with known trip count.
+
+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.
+       * passes.c (ipa_write_summaries): Write all analyzed nodes.
+
+2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * vecir.h: New file with VEC primitives for tree, gimple, and rtl.
+       * Makefile.in: Add it.
+       Fix all other Makefile dependencies for changes below.
+       * tree.h: Include it instead of defining VEC primitives here.
+       * gimple.h: Likewise.
+       * rtl.h: Likewise.
+       * tree-inline.h: Inlclude vecir.h instead of gimple.h.
+       * except.h: Include vecir.h, break dependence on tree.h.
+
+       * gimplify.c (append_to_statement_list_1, append_to_statement_list):
+       Move from here...
+       * tree-iterator.c: ...to here.
+       * tree-iterator.h: Fix file introduction comment.  Add extern markers.
+
+       * c-lex.c: Include fixed-value.h instead of rtl.h.  Do not include
+       tm_p.h.
+       * c-cppbuiltin.c: Explain why debug.h and tm_p.h are included.
+       * c-objc-common.h: Do not include tm.h, rtl.h, insn-config.h,
+       integrate.h, function.h, toplev.h, tree-inline.h, ggc.h,
+       tree-mudflap.h, and target.h.
+       * c-semantics.c: Do not include except.h, ggc.h, rtl.h, timevar.h,
+       predict.h, tree-inline.h, gimple.h, and langhooks.h.
+       * c-decl.c: Do not include expr.h, ggc.h, libfuncs.h, except.h.
+       Add FIXME for why gimple.h is still included (should be unnecessary
+       since GCC 4.5 gimplification unit-at-a-time).
+       * c-typeck.c: Do not include rtl.h, tm_p.h, ggc.h, and gimple.h.
+       * c-pragma.c: Add FIXME for why function.h needs to be included just
+       for cfun, at front-end level.
+       Add note that REGISTER_TARGET_PRAGMAS should probably be a target hook.
+       Do not include ggc.h, but include vecprim.h for VEC(char).
+       * c-opts.c: Do not include tm.h, tree-inline.h, and tm_p.h.
+       Explain why target.h is included.
+       * c-omp.h: Do not include tm.h, function.h, and bitmap.h.
+       Explain why gimple.h is included.
+       * c-ppoutput.c: Do not include tm.h.
+       * c-common.c: Do not include gimple.h.  Explain why expr.h is included.
+       * c-parses.c: Explain why rtl.h is included, and that this (and only
+       this) is also why tm.h must be included.
+       Do not include except.h.
+       * c-lang.c: Do not include ggc.h.
+
+2010-05-15  Uros Bizjak  <ubizjak@gmail.com>
+
+       * targhooks.c (GO_IF_MODE_DEPENDENT_ADDRESS): Use CONST_CAST_RTX.
+
+2010-05-15  Joseph Myers  <joseph@codesourcery.com>
+
+       * c-decl.c (grokfield): Allow typedefs for anonymous structs and
+       unions by default if those structs and unions have no tags.  Do
+       not condition anonymous struct and unions handling on flag_iso.
+       Allow anonymous structs and unions for C1X.
+       (finish_struct): Do not diagnose lack of named fields when
+       anonymous structs and unions present for C1X.  Accept flexible
+       array members in structure with anonymous structs or unions but no
+       directly named fields.
+       * doc/extend.texi (Unnamed Fields): Update.
+
+2010-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gimple.h (compare_field_offset): Rename into...
+       (gimple_compare_field_offset): ...this.
+       * gimple.c (compare_field_offset): Rename into...
+       (gimple_compare_field_offset): ...this.  Compare the full access if
+       the offset is self-referential.
+       (gimple_types_compatible_p): Adjust for above renaming.
+       * lto-streamer-in.c (input_gimple_stmt): Likewise.  Also compare the
+       DECL_NONADDRESSABLE_P flag of fields before merging them.
+
+2010-05-15  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (ctor_to_list): Delete.
+       * tree.c (ctor_to_list): Delete.
+
+2010-05-15  Jan Hubicka  <jh@suse.cz>
+
+       * ipa-reference.c: Include toplev.h
+       (is_proper_for_analysis): Only add to all_module_statics
+       if it is allocated.
+       (write_node_summary_p, stream_out_bitmap,
+       ipa_reference_write_optimization_summary,
+       ipa_reference_read_optimization_summary): New.
+       (struct ipa_opt_pass_d pass_ipa_reference): Add
+       optimization summary streaming.
+       * lto-cgraph.c (referenced_from_this_partition_p,
+       reachable_from_this_partition_p): New functions.
+       * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
+       call_may_clobber_ref_p_1): Ask ipa-reference even for public vars.
+       * opts.c (decode_options): Enable ipa_reference.
+       * Makefile.in (ipa-reference.o): Add toplev.h dependency.
+       * lto-streamer.h (referenced_from_this_partition_p,
+       reachable_from_this_partition_p): Declare.
+
+2010-05-15  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/44038
+       * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Avoid
+       taking the address of a V_C_E of a constant.
+
+2010-05-14  Jan Hubicka  <jh@suse.cz>
+
+       * tree.h (memory_identifier_string): Remove.
+       * ipa-reference.c: Update comment; do not include gt-ipa-reference.h
+       (ipa_reference_global_vars_info_d): Remove statics_not_read and
+       statics_not_written.
+       (ipa_reference_optimization_summary_d): New structure.
+       (ipa_reference_optimization_summary_t): New type and vector.
+       (ipa_reference_vars_info_d): Embedd structures instead of using
+       pointers.
+       (reference_vars_to_consider): Remove out of GGC space.
+       (module_statics_escape): Remove.
+       (global_info_obstack): Rename to ...
+       (optimization_summary_obstack): ... this one.
+       (initialization_status_t): Remove.
+       (memory_identifier_string): Remove.
+       (get_reference_vars_info): Fix indenting.
+       (set_reference_vars_info): Likewise.
+       (get_reference_optimization_summary): New.
+       (set_reference_optimization_summary): New.
+       (get_global_reference_vars_info): Remove.
+       (ipa_reference_get_read_global): Remove.
+       (ipa_reference_get_written_global): Remove.
+       (ipa_reference_get_not_read_global): Update.
+       (ipa_reference_get_not_written_global): Update.
+       (is_proper_for_analysis): Outlaw addressable.
+       (propagate_bits): Update for new datastructures.
+       (analyze_variable): Remove.
+       (init_function_info): Update for new datastructures.
+       (clean_function_local_data): Remove.
+       (clean_function): Remove.
+       (copy_global_bitmap): Use optimizations_summary_obstack.
+       (duplicate_node_data): Duplicate optimization summary only.
+       (remove_node_data): Remove optimization summary only.
+       (generate_summary): Do not analyze variables; do not compute
+       module_statics_escape; do not prune solutions by it.
+       (read_write_all_from_decl): Fix typos in comments.
+       (propagate): Doscover readonly and nonaddressable first;
+       update for new datastructures; share global bitmaps.
+       * ipa-reference.h (ipa_reference_get_read_global,
+       ipa_reference_get_written_global): Remove.
+       * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string.
+       * Makefile.in: Remove ipa-refereference from GT files.
+
+2010-05-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/44112
+       * dwarf2out.c (resolve_one_addr): Check TREE_ASM_WRITTEN
+       for all SYMBOL_REF_DECLs.
+
+2010-05-14  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Declare.
+       (varpool_all_refs_explicit_p): New inline function.
+       * ipa-reference.c: Update comment.
+       (module_statics_written): Remove.
+       (get_static_decl): Remove.
+       (ipa_init): Do not initialize module_statics_written.
+       (analyze_function): Likewise.
+       (generate_summary): Likewise; do not compute module_statics_readonly
+       and do not update variable flags.
+       (propagate): Call ipa_discover_readonly_nonaddressable_vars.
+       * ipa.c: Inlucde flags.h
+       (cgraph_local_node_p): New.
+       (cgraph_remove_unreachable_nodes): Return early when not optimizing;
+       promote functions to local.
+       (ipa_discover_readonly_nonaddressable_vars): New function.
+       (function_and_variable_visibility): Use cgraph_local_node_p.
+       * varpool.c (varpool_finalize_decl): Set force_output for
+       DECL_PRESERVE_P vars.
+
+2010-05-14  Jan Hubicka  <jh@suse.cz>
+
+       * ipa.c (cgraph_remove_unreachable_nodes): Revert accidental commit.
+
+2010-05-14  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/44119
+       * tree-ssa-pre.c (eliminate): Properly mark replacement of
+       a PHI node necessary.
+
+2010-05-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.h (TREE_ADDRESSABLE): Remove bogus usage for FIELD_DECL.
+
+2010-05-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/44127
+       * gimple.h (enum gf_mask): Add GF_CALL_NOTHROW.
+       (gimple_call_set_nothrow): New.
+       * gimple.c (gimple_build_call_from_tree): Call it.
+       (gimple_call_flags): Set ECF_NOTHROW from GF_CALL_NOTHROW.
+
+       PR c++/44127
+       * gimplify.c (gimplify_seq_add_stmt): No longer static.
+       * gimple.h: Declare it.
+       * gimple.c (gimple_build_eh_filter): No ops.
+
+2010-05-14  Jan Hubicka  <jh@suse.cz>
+
+       * ipa.c (enqueue_cgraph_node): Update comment; do not re-enqueue
+       nodes already in queue.
+       (cgraph_remove_unreachable_nodes): Cleanup; fix problem with
+       re-enqueueing node.
+
+2010-05-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/44136
+       * cfgexpand.c (expand_debug_expr): If non-memory op0
+       has BLKmode, return NULL.
+
+2010-05-14  Harsha Jagasia  <harsha.jagasia@amd.com>
+
+       * config.gcc: Add support for --with-cpu option for bdver1.
+       * config/i386/i386.h (TARGET_BDVER1): New macro.
+       (ix86_tune_indices): Change SSE_UNALIGNED_MOVE_OPTIMAL
+       to SSE_UNALIGNED_LOAD_OPTIMAL. Add SSE_UNALIGNED_STORE_OPTIMAL.
+       (ix86_tune_features) :Change SSE_UNALIGNED_MOVE_OPTIMAL
+       to SSE_UNALIGNED_LOAD_OPTIMAL. Add SSE_UNALIGNED_STORE_OPTIMAL.
+       Add SSE_PACKED_SINGLE_INSN_OPTIMAL.
+       (TARGET_CPU_DEFAULT_NAMES): Add bdver1.
+       (processor_type): Add PROCESSOR_BDVER1.
+       * config/i386/i386.md: Add bdver1 as a new cpu attribute to match
+       processor_type in config/i386/i386.h.
+       Add check for TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit
+       movaps <reg, reg> instead of movapd <reg, reg> when replacing
+       movsd <reg, reg> or movss <reg, reg> for SSE and AVX.
+       Add check for  TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL
+       to emit packed xor instead of packed double/packed integer
+       xor for SSE and AVX when moving a zero value.
+       * config/i386/sse.md: Add check for
+       TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit movaps instead of
+       movapd/movdqa for SSE and AVX.
+       Add check for TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit packed
+       single logical operations i.e and, or and xor instead of packed double
+       logical operations for SSE and AVX.
+       * config/i386/i386-c.c (ix86_target_macros_internal):
+       Add PROCESSOR_BDVER1.
+       * config/i386/driver-i386.c: Turn on -mtune=native for BDVER1.
+       (has_fma4, has_xop): New.
+       * config/i386/i386.c (bdver1_cost): New variable.
+       (m_BDVER1): New macro.
+       (m_AMD_MULTIPLE): Add m_BDVER1.
+       (x86_tune_use_leave, x86_tune_push_memory, x86_tune_unroll_strlen,
+       x86_tune_deep_branch_prediction, x86_tune_use_sahf, x86_tune_movx,
+       x86_tune_use_simode_fiop, x86_tune_promote_qimode,
+       x86_tune_add_esp_8, x86_tune_tune_sub_esp_4, x86_tune_sub_esp_8,
+       x86_tune_integer_dfmode_moves, x86_tune_partial_reg_dependency,
+       x86_tune_sse_partial_reg_dependency,
+       x86_tune_sse_unaligned_load_optimal,
+       x86_tune_sse_unaligned_store_optimal, x86_tune_sse_typeless_stores,
+       x86_tune_memory_mismatch_stall, x86_tune_use_ffreep,
+       x86_tune_inter_unit_moves, x86_tune_inter_unit_conversions,
+       x86_tune_use_bt, x86_tune_pad_returns, x86_tune_slow_imul_imm32_mem,
+       x86_tune_slow_imul_imm8, x86_tune_fuse_cmp_and_branch):
+       Enable/disable for bdver1.
+       (processor_target_table): Add bdver1_cost.
+       (cpu_names): Add bdver1.
+       (override_options): Set up PROCESSOR_BDVER1 for bdver1 entry in
+        processor_alias_table.
+       (ix86_expand_vector_move_misalign): Change.
+       TARGET_SSE_UNALIGNED_MOVE_OPTIMAL to TARGET_SSE_UNALIGNED_LOAD_OPTIMAL.
+       Check for TARGET_SSE_UNALIGNED_STORE_OPTIMAL.
+       Check for TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit movups instead
+       of movupd/movdqu for SSE and AVX.
+       (ix86_tune_issue_rate): Add PROCESSOR_BDVER1.
+       (ix86_tune_adjust_cost): Add code for bdver1.
+       (standard_sse_constant_opcode): Add check for
+       TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit packed single xor instead
+       of packed double xor for SSE and AVX.
+
+2010-05-14  Pat Haugen  <pthaugen@us.ibm.com>
+
+       * tree-ssa-loop.prefetch.c (prune_ref_by_group_reuse): Cast abs()
+       result to unsigned.
+
+2010-05-14  Tristan Gingold  <gingold@adacore.com>
+
+       * toplev.c (default_debug_hooks): Remove this variable.
+       (process_options): Remove assignments to default_debug_hooks.
+
+2010-05-14  Martin Jambor  <mjambor@suse.cz>
+
+       * langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove.
+       (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_FOLD_OBJ_TYPE_REF.
+       * langhooks.h (struct lang_hooks_for_decls): Removed field
+       fold_obj_type_ref.
+       * tree.c (free_lang_data): Remove assignment to
+       lang_hooks.fold_obj_type_ref.
+       * tree.def (OBJ_TYPE_REF): Update comment.
+
+2010-05-14  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/44124
+       * tree-ssa-sccvn.c (vn_nary_may_trap): Fix invalid memory access.
+
+2010-05-14  Alan Modra  <amodra@gmail.com>
+
+       PR target/44075
+       * config/rs6000/rs6000.c (struct machine_function): Reorder
+       fields for better packing.  Add lr_save_state.
+       (rs6000_ra_ever_killed): Return lr_save_state if set.
+       (rs6000_emit_eh_reg_restore): Set lr_save_state.
+
+2010-05-13  Jan Hubicka  <jh@suse.cz>
+
+       * varpool.c (decide_is_variable_needed): Drop code checking
+       TREE_SYMBOL_REFERENCED.
+
+2010-05-13  Jan Hubicka  <jh@suse.cz>
+
+       * final.c (output_addr_const): Do not call mark_decl_referenced.
+       * cgraphunit.c (process_function_and_variable_attributes): Use
+       mark_needed_node dirrectly.
+       (assemble_thunk): Do not call mark_decl_referenced.
+
+2010-05-13  Anatoly Sokolov  <aesok@post.ru>
+
+       * targhooks.c (default_mode_dependent_address_p): Cast 'addr' to rtx.
+
+2010-05-13  Jeff Law  <law@redhat.com>
+
+       * ira-conflicts.c (print_allocno_conflicts): New function broken out
+       from...
+       (print_conflicts): Call print_allocno_conflicts.
+
+2010-05-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/44104
+       * dwarf2out.c (modified_type_die): Don't dereference mod_type_die
+       if it is NULL.
+
+2010-05-13  Kai Tietz  <kai.tietz@onevision.com>
+
+       * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Choose
+       t-mingw-w64 or t-mingw-w32 for multilib configuration.
+       * config/i386/t-mingw-w32: New.
+       * config/i386/t-mingw-w64 (MULTILIB_OSDIRNAMES): Change lib64 to lib.
+
+2010-05-13  Martin Jambor  <mjambor@suse.cz>
+
+       * gimple.c (gimple_fold_obj_type_ref): Removed (a replacement moved to
+       gimple-fold.c).
+       * gimple-fold.c (get_base_binfo_for_type): New function.
+       (gimple_get_relevant_ref_binfo): Likewise.
+       (gimple_fold_obj_type_ref_known_binfo): Likewise.
+       (gimple_fold_obj_type_ref): Likewise.
+       (fold_gimple_call): Simplify condition for folding virtual calls
+       and call gimple_fold_obj_type_ref.
+       * gimple.h (gimple_get_relevant_ref_binfo): Declare.
+       (gimple_fold_obj_type_ref_known_binfo): Likewise.
+
+2010-05-13  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * config/rs6000/rs6000-protos.h
+       (rs6000_mode_dependent_address_ptr): Change argument to const_rtx.
+       * config/rs6000/rs6000.c (rs6000_mode_dependent_address)
+       (rs6000_debug_mode_dependent_address)
+       (rs6000_mode_dependent_address_ptr): Likewise.
+
+2010-05-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/43983
+       * var-tracking.c (track_expr_p): Allow tracking of variables optimized
+       by SRA.
+       * Makefile.in (dwarf2out.o): Depend on $(TREE_FLOW_H).
+       * tree-sra.c (create_access_replacement): Call unshare_expr before
+       passing expr to SET_DECL_DEBUG_EXPR, and remove any SSA_NAMEs from it.
+       * dwarf2out.c: Include tree-flow.h.
+       (struct var_loc_node): Rename var_loc_note field to loc, add comment.
+       (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
+       Handle DW_OP_bit_piece.
+       (decl_piece_bitsize, decl_piece_varloc_ptr, decl_piece_node,
+       construct_piece_list, adjust_piece_list): New functions.
+       (add_var_loc_to_decl): Handle SRA optimized variables.
+       Adjust for var_loc_note to loc field renaming.
+       (dw_loc_list_1): For WANT_ADDRESS == 2 prefer DECL_MODE of decl
+       in VAR_LOCATION note.
+       (new_loc_descr_op_bit_piece): New function.
+       (dw_sra_loc_expr): New function.
+       (dw_loc_list): Use it.  Don't handle the last range after the
+       loop, handle it inside of the loop.  Adjust for var_loc_note
+       to loc field renaming.
+       (add_location_or_const_value_attribute): Only special case
+       single entry loc lists if loc is NOTE_P.  Adjust for
+       var_loc_note to loc field renaming.
+       (dwarf2out_var_location): Don't set newloc->var_loc_note
+       and newloc->next here.
+
+2010-05-12  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (cgraph_mark_address_taken_node): No longer imply needed
+       flag.
+       * cgraph.h (cgraph_only_called_directly_p,
+       cgraph_can_remove_if_no_direct_calls_p): test address_taken flag.
+       (cgraph_can_remove_if_no_direct_calls_and_refs_p): New function.
+       * cgraphunit.c (cgraph_mark_functions_to_output): Test address_taken.
+       (assemble
+       * ipa.c (cgraph_remove_unreachable_nodes): Use
+       cgraph_can_remove_if_no_direct_calls_and_refs_p; clear address_taken
+       flags.
+       * tree-inline.c (copy_bb): Check address_taken flag.
+       * tree-profile.c (tree_gen_ic_func_profiler): Check address_taken and
+       externally_visible flag.
+
+2010-05-12  Jason Merrill  <jason@redhat.com>
+
+       PR bootstrap/44048
+       PR target/44099
+       * dbxout.c (dbxout_type): Remove NULLPTR_TYPE handling.
+       * sdbout.c (plain_type_1): Likewise.
+       * dwarf2out.c (is_base_type): Likewise.
+       (gen_type_die_with_usage): Likewise.  Generate
+       DW_TAG_unspecified_type for any LANG_TYPE.
+
+2010-05-12  Jan Hubicka  <jh@suse.cz>
+
+       * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Build
+       indrect edges too.
+       * cgraph.c (cgraph_create_indirect_edge): Take ecf_flags argument.
+       (cgraph_clone_edge): Update.
+       (cgraph_node_remove_callees): Remove indirect calls too.
+       * cgraph.h (cgraph_indirect_call_info): Add ecf_flags.
+       (cgraph_create_indirect_edge): Update prototype.
+       * ipa-reference.c (has_proper_scope_for_analysis): Rename to
+       is_proper_for_analysis.
+       (add_new_function, visited_nodes, function_insertion_hook_holder,
+       get_local_reference_vars_info, mark_address_taken, mark_address,
+       mark_load, mark_store, check_asm_memory_clobber, check_call,
+       scan_stmt_for_static_refs, scan_initializer_for_static_refs): Remove.
+       (ipa_init): Do not initialize visited_nodes;
+       function_insertion_hook_holder.
+       (analyze_variable): Rewrite.
+       (analyze_function): Rewrite.
+       (copy_local_bitmap): Remove.
+       (duplicate_node_dat): Do not duplicate local info.
+       (generate_summary): Simplify to only walk cgraph.
+       (write_node_summary_p, ipa_reference_write_summary,
+       ipa_reference_read_summary): Remove.
+       (propagate): Do not remove function insertion;
+       generate summary.
+       (pass_ipa_reference): NULLify summary handling fields.
+       * lto-cgraph.c (lto_output_edge): Output ecf_flags.
+       (input_edge): Input ecf_flags.
+       * ipa-prop.c (ipa_note_parm_call): Expect edge to be around.
+       (update_indirect_edges_after_inlining): Ignore edges with unknown
+       param.
+
+2010-05-12  Sriraman Tallam  <tmsriram@google.com>
+
+       * implicit-zee.c: New file.
+       * tree-pass.h (pass_implicit_zee): Declare.
+       * passes.c (init_optimization_passes): Add zee pass.
+       * common.opt (fzee): New flag.
+       * timevar.def (TV_ZEE): Define.
+       * config/i386/i386.c (optimization_options): Turn on ZEE for level 2
+       and beyond.
+       * Makefile.in (implicit-zee.o): Add new build file.
+
+2010-05-12  Kazu Hirata  <kazu@codesourcery.com>
+           Nathan Froyd  <froydnj@codesourcery.com>
+
+       * c-common.c (sync_resolve_params): Remove write-only variable.
+
+2010-05-12  Anatoly Sokolov  <aesok@post.ru>
+
+       * target.h (struct gcc_target): Add mode_dependent_address_p field.
+       * target-def.h (TARGET_MODE_DEPENDENT_ADDRESS_P): New.
+       (TARGET_INITIALIZER): Use TARGET_MODE_DEPENDENT_ADDRESS_P.
+       * targhooks.c (default_mode_dependent_address_p): New function.
+       * targhooks.h (default_mode_dependent_address_p): Declare function.
+       * doc/tm.texi (TARGET_MODE_DEPENDENT_ADDRESS_P): New.
+       (GO_IF_MODE_DEPENDENT_ADDRESS): Update.
+       * recog.c: (mode_dependent_address_p): Call mode_dependent_address_p
+       target hook. Change return type to bool.
+       * recog.h: (mode_dependent_address_p): Change return type to bool.
+
 2010-05-12  Kazu Hirata  <kazu@codesourcery.com>
            Nathan Froyd  <froydnj@codesourcery.com>
 
 2010-05-11  Jan Hubicka  <jh@suse.cz>
 
        PR tree-optimize/44063
-       * ipa-inline.c (cgraph_edge_badness): Move always inlines to top of queue.
+       * ipa-inline.c (cgraph_edge_badness): Move always inlines to top of
+       queue.
        (cgraph_decide_inlining_of_small_function): Skip check when disrgarding
        limits.
        (estimate_function_body_sizes): Compute sizes even when disregarding.
 
 2010-05-11  Christian Borntraeger  <borntraeger@de.ibm.com>
 
-        * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset
+       * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset
        prefetch_before to PREFETCH_ALL if to accesses "meet" beyond
        cache size.
 
 2010-05-11  Christian Borntraeger  <borntraeger@de.ibm.com>
 
-        * tree-ssa-loop-prefetch.c: Add debug for dropped prefetches.
+       * tree-ssa-loop-prefetch.c: Add debug for dropped prefetches.
 
 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
 
 
 2010-05-10  Jan Hubicka  <jh@suse.cz>
 
-       * lto-stramer-out.c (produce_asm_for_decls): Correct accidentally commited change.
+       * lto-stramer-out.c (produce_asm_for_decls): Correct accidentally
+       commited change.
 
 2010-05-10  Jan Hubicka  <jh@suse.cz>
 
-       * passes.c (ipa_write_summaries_1, ipa_write_optimization_summaries): Allocate
-       encoders.
+       * passes.c (ipa_write_summaries_1, ipa_write_optimization_summaries):
+       Allocate encoders.
        * lto-section-out.c (lto_new_out_decl_state): Do not allocate it here.
        * lto-streamer.c (lto_streamer_cache_insert_1): Use alloc pool.
        (lto_streamer_cache_create): Init alloc pool.
 
 2010-04-08  Wolfgang Gellerich  <gellerich@de.ibm.com>
 
-       * config/s390/s390.c (override_options): Adjust the z10
-         defaults for max-unroll-times, max-completely-peeled-insns
-         and max-completely-peel-times.
+       * config/s390/s390.c (override_options): Adjust the z10 defaults
+       for max-unroll-times, max-completely-peeled-insns
+       and max-completely-peel-times.
 
 2010-04-08  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>