diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-07-29 15:47:54 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-07-29 15:47:54 +0000 |
commit | 81bdf64f2035b8979549fc533915ea17d429dc9f (patch) | |
tree | 69e2b47b22500339535d6f5f37e3fca2350d4f3a /gcc/ChangeLog | |
parent | 7f1c23c2e7981438c251121d85cf5d807b9a4f5d (diff) | |
download | gcc-81bdf64f2035b8979549fc533915ea17d429dc9f.tar.gz |
2008-07-29 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r138226 [after tuple merge into trunk]
some compiler probe stuff are missing
* gcc/compiler-probe.h: more gimple, less tree
* gcc/compiler-probe.c: incomplete merge.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@138247 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 1006 |
1 files changed, 1006 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 951d26375d1..aa4d3b2d983 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1009 @@ +2008-07-28 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/36957 + * tree-flow.h (tree_ssa_useless_type_conversion): Remove. + (useless_type_conversion_p): Remove. + (types_compatible_p): Remove. + * gimple.h (tree_ssa_useless_type_conversion): Declare. + (useless_type_conversion_p): Declare. + (types_compatible_p): Declare. + (gimple_expr_type): Return the base type only if it is + trivially convertible to the subtype. + +2008-07-28 Andreas Tobler <a.tobler@schweiz.org> + + * configure.ac: Use the m4_do macro to concatenate the warnings into + one string in ACX_PROG_CC_WARNING_OPTS, + ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS. + * configure: Regenerate. + +2008-07-28 Richard Guenther <rguenther@suse.de> + + * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code. + (insert_fake_stores): Remove. + (realify_fake_stores): Likewise. + (execute_pre): Remove dead code. + * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary + case. + (find_func_aliases): Deal with it here instead. + Re-enable gcc_unreachable call. + +2008-07-28 Richard Guenther <rguenther@suse.de> + + Merge from gimple-tuples-branch. + + * ChangeLog.tuples: ChangeLog from gimple-tuples-branch. + * gimple.def: New file. + * gsstruct.def: Likewise. + * gimple-iterator.c: Likewise. + * gimple-pretty-print.c: Likewise. + * tree-gimple.c: Removed. Merged into ... + * gimple.c: ... here. New file. + * tree-gimple.h: Removed. Merged into ... + * gimple.h: ... here. New file. + + * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h. + * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the + --enable-checking=gimple flag. + * config.in: Likewise. + * configure: Regenerated. + + * tree-ssa-operands.h: Tuplified. + * tree-vrp.c: Likewise. + * tree-loop-linear.c: Likewise. + * tree-into-ssa.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-dump.c: Likewise. + * tree-complex.c: Likewise. + * cgraphbuild.c: Likewise. + * tree-ssa-threadupdate.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-pretty-print.c: Likewise. + * tracer.c: Likewise. + * gengtype.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-ssa-loop-unswitch.c: Likewise. + * cgraph.c: Likewise. + * cgraph.h: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * value-prof.c: Likewise. + * tree-ssa-loop-ch.c: Likewise. + * tree-tailcall.c: Likewise. + * value-prof.h: Likewise. + * tree.c: Likewise. + * tree.h: Likewise. + * tree-pass.h: Likewise. + * ipa-cp.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-scalar-evolution.h: Likewise. + * target.h: Likewise. + * lambda-mat.c: Likewise. + * tree-phinodes.c: Likewise. + * diagnostic.h: Likewise. + * builtins.c: Likewise. + * tree-ssa-alias-warnings.c: Likewise. + * cfghooks.c: Likewise. + * fold-const.c: Likewise. + * cfghooks.h: Likewise. + * omp-low.c: Likewise. + * tree-ssa-dse.c: Likewise. + * ipa-reference.c: Likewise. + * tree-ssa-uncprop.c: Likewise. + * toplev.c: Likewise. + * tree-gimple.c: Likewise. + * tree-gimple.h: Likewise. + * tree-chrec.c: Likewise. + * tree-chrec.h: Likewise. + * tree-ssa-sccvn.c: Likewise. + * tree-ssa-sccvn.h: Likewise. + * cgraphunit.c: Likewise. + * tree-ssa-copyrename.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-nomudflap.c: Likewise. + * tree-call-cdce.c: Likewise. + * ipa-pure-const.c: Likewise. + * c-format.c: Likewise. + * tree-stdarg.c: Likewise. + * tree-ssa-math-opts.c: Likewise. + * tree-ssa-dom.c: Likewise. + * tree-nrv.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * ipa-utils.c: Likewise. + * tree-ssa-propagate.h: Likewise. + * tree-ssa-alias.c: Likewise. + * gimple-low.c: Likewise. + * tree-ssa-sink.c: Likewise. + * ipa-inline.c: Likewise. + * c-semantics.c: Likewise. + * dwarf2out.c: Likewise. + * expr.c: Likewise. + * tree-ssa-loop-ivcanon.c: Likewise. + * predict.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-parloops.c: Likewise. + * tree-ssa-address.c: Likewise. + * tree-ssa-ifcombine.c: Likewise. + * matrix-reorg.c: Likewise. + * c-decl.c: Likewise. + * tree-eh.c: Likewise. + * c-pretty-print.c: Likewise. + * lambda-trans.c: Likewise. + * function.c: Likewise. + * langhooks.c: Likewise. + * ebitmap.h: Likewise. + * tree-vectorizer.c: Likewise. + * function.h: Likewise. + * langhooks.h: Likewise. + * tree-vectorizer.h: Likewise. + * ipa-type-escape.c: Likewise. + * ipa-type-escape.h: Likewise. + * domwalk.c: Likewise. + * tree-if-conv.c: Likewise. + * profile.c: Likewise. + * domwalk.h: Likewise. + * tree-data-ref.c: Likewise. + * tree-data-ref.h: Likewise. + * tree-flow-inline.h: Likewise. + * tree-affine.c: Likewise. + * tree-vect-analyze.c: Likewise. + * c-typeck.c: Likewise. + * gimplify.c: Likewise. + * coretypes.h: Likewise. + * tree-ssa-phiopt.c: Likewise. + * calls.c: Likewise. + * tree-ssa-coalesce.c: Likewise. + * tree.def: Likewise. + * tree-dfa.c: Likewise. + * except.c: Likewise. + * except.h: Likewise. + * cfgexpand.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-ssa-pre.c: Likewise. + * tree-ssa-live.c: Likewise. + * tree-sra.c: Likewise. + * tree-ssa-live.h: Likewise. + * tree-predcom.c: Likewise. + * lambda.h: Likewise. + * tree-mudflap.c: Likewise. + * ipa-prop.c: Likewise. + * print-tree.c: Likewise. + * tree-ssa-copy.c: Likewise. + * ipa-prop.h: Likewise. + * tree-ssa-forwprop.c: Likewise. + * ggc-page.c: Likewise. + * c-omp.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-ssa-ter.c: Likewise. + * tree-nested.c: Likewise. + * tree-ssa.c: Likewise. + * lambda-code.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-inline.c: Likewise. + * tree-inline.h: Likewise. + * tree-iterator.c: Likewise. + * tree-optimize.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-vect-transform.c: Likewise. + * tree-object-size.c: Likewise. + * tree-outof-ssa.c: Likewise. + * cfgloop.c: Likewise. + * system.h: Likewise. + * tree-profile.c: Likewise. + * cfgloop.h: Likewise. + * c-gimplify.c: Likewise. + * c-common.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-flow.h: Likewise. + * c-common.h: Likewise. + * basic-block.h: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-switch-conversion.c: Likewise. + * tree-ssa-structalias.h: Likewise. + * tree-cfg.c: Likewise. + * passes.c: Likewise. + * ipa-struct-reorg.c: Likewise. + * ipa-struct-reorg.h: Likewise. + * tree-ssa-reassoc.c: Likewise. + * cfgrtl.c: Likewise. + * varpool.c: Likewise. + * stmt.c: Likewise. + * tree-ssanames.c: Likewise. + * tree-ssa-threadedge.c: Likewise. + * langhooks-def.h: Likewise. + * tree-ssa-operands.c: Likewise. + * config/alpha/alpha.c: Likewise. + * config/frv/frv.c: Likewise. + * config/s390/s390.c: Likewise. + * config/m32c/m32c.c: Likewise. + * config/m32c/m32c-protos.h: Likewise. + * config/spu/spu.c: Likewise. + * config/sparc/sparc.c: Likewise. + * config/i386/i386.c: Likewise. + * config/sh/sh.c: Likewise. + * config/xtensa/xtensa.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/ia64/ia64.c: Likewise. + * config/rs6000/rs6000.c: Likewise. + * config/pa/pa.c: Likewise. + * config/mips/mips.c: Likewise. + +2008-07-28 Simon Baldwin <simonb@google.com> + + * c-pragma.c (handle_pragma_message): New function. + (init_pragma): Register handle_pragma_message. + * doc/extend.texi (Diagnostic Pragmas): Added #pragma message + documentation. + +2008-07-27 Victor Kaplansky <victork@il.ibm.com> + + PR tree-optimization/35252 + * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and + REALPART_EXPR to be considered as same load operation. + +2008-07-27 Eric Botcazou <ebotcazou@adacore.com> + + PR tree-optimization/36830 + * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2. + (expressions_equal_p): Return false if only one operand is null. + +2008-07-26 Gerald Pfeifer <gerald@pfeifer.com> + + * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo + version requirements. + +2008-07-26 Olivier Hainque <hainque@adacore.com> + + * collect2.c (symkind): New enum. Symbol kinds we care about. + (is_ctor_dtor): Return symkind instead of int. Adjust prototype, + code and head comment accordingly. + (scan_prog_file): Use symkind names instead of bare integers. + +2008-07-25 Jan Hubicka <jh@suse.cz> + + * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on DECL_INLINE. + * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE + (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE. + * dojump.c (clear_pending_stack_adjust): Likewise. + * print-tree.c (print_node): Ignore DECL_INLINE. + * tree-inline.c (inlinable_function_p): Likewise. + +2008-07-25 Michael Meissner <gnu@the-meissners.org> + + * doc/extend.texi (hot attribute): Document that the hot attribute + turns on -O3 for some ports. + (cold attribute): Document that the cold attribute turns on -Os + for some ports + + * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to + reflect function specific option support. + + * target.h (struct target_option_hooks): Add fields to say whether + the cold attribute implies -Os and the hot attribute implies -O3. + + * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): + By default, do not turn on -Os for cold functions. + (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do + not turn on -O3 for hot functions. + + * c-common.c (handle_hot_attribute): Use target hook to determine + if hot functions should enable -O3. + (handle_cold_attribute): Use target hook to determine if cold + functions should enable -Os. + + * config/i386/i386.c (ix86_target_string): Add -m3dnowa support. + (override_options): Move disable scheduling to + optimization_options. + (optimization_options): Disable scheduling here, not + override_options. + (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define. + (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define. + + * config/ia64/ia64.c (ia64_override_options): Move setting + scheduling flags to ia64_optimization_options. + (ia64_optimization_options): Disable scheduling options here, and + not in ia64_override_options. + (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define. + (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define. + +2008-07-25 H.J. Lu <hongjiu.lu@intel.com> + + PR target/36936 + * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE. + +2008-07-25 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/36926 + * ipa-prop.c (ipa_analyze_call_uses): Call + ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF. + +2008-07-25 Joseph Myers <joseph@codesourcery.com> + + * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal, + movv2si_internal): Add mem = reg alternative. + +2008-07-25 Andreas Tobler <a.tobler@schweiz.org> + + PR bootstrap/36918 + * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define + DEFAULT_PCC_STRUCT_RETURN to 127. + +2008-07-24 Jan Hubicka <jh@suse.cz> + + * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code. + (build_cgraph_edges): Likewise. + * cgraph.c (cgraph_node): Do not update assembler hash. + (cgraph_remove_node): Drop non-unit-at-a-time code. + * tree-pass.h (pass_O0_always_inline): Remove. + * ipa-reference.c (gate_reference): Remove unit-at-a-time check. + * toplev.c (process_options): Flag unit-at-a-time does not imply + no section anchors. + * cgraphunit.c: Update comments. + (decide_is_function_needed): Drop non-unit-at-a-time mode. + (cgraph_assemble_pending_functions): Remove. + (cgraph_reset_node): Drop non-unit-at-a-time code. + (cgraph_finalize_function): Likewise. + (cgraph_analyze_function): Likewise. + (cgraph_finalize_compilation_unit): Likewise. + (cgraph_expand_function): Likewise. + (cgraph_optimize): Likesise. + (save_inline_function_body): Likewise. + * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check. + * tree-ssa-alias.c (maybe_be_aliased): Likewise. + * ipa-inline.c: Update comments. + (enum inlining_mode): remove INLINE_SPEED. + (cgraph_clone_inlined_nodes): Drop unit-at-a-time check. + (cgraph_mark_inline_edge): Likewise. + (try_inline): Likewise. + (cgraph_decide_inlining_incrementally): Likewise. + (cgraph_gate_inlining): Remove. + (cgraph_early_inlining): Remove flag_unit_at_a_time checks. + (cgraph_gate_early_inlining): Likewise. + (gate_inline_passes): Remove. + (pass_inline_parameters, pass_ipa_inline): Remove gates. + (cgraph_gate_O0_always_inline, cgraph_O0_always_inline, + pass_O0_always_inline): Remove. + * c-pch.c (c_pch_matching): Remove -funit-at-a-time. + * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check. + * opts.c (no_unit_at_a_time_default): Remove. + (decode_options): Remove flag_unit_at_a_time reset and warning. + * opts.h (no_unit_at_a_time_default): Remove. + * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword + early in GNU dialect. + (merge_decls): Update comment; drop unit-at-a-time check. + (finish_decl): Likewise. + (grok_declaration): Remove flag_inline_trees code. + (finish_functions): Return on function returning non-void on all + statics. + * ipa-tye-escape.c (gate_type_escape_vars): Remove. + * cfgexpand.c (expand_one_static_var): Remove. + (expand_one_var): Remove expand_one_static_var call. + (expand_used_vars_for_block): Remove flag_unit_a_time check. + * c-opts.c (c_common_post_options): Remove flag_inline_trees code + and flag_unit_at_a-time compatibility checks. + * varasm.c (assemble_alias): Remove flag_unit_at_a_time check. + * tree-inline.c (flag_inline_trees): Remove. + (inlinable_function_p): Don't check it. + (expand_call_inline): Remove non-unit-at-a-time code. + * tree-inline.h (flag_inline_trees): Remove. + * tree-optimize.c (execute_early_local_optimizations): Remove + unit-at-a-time checks. + (tree_rest_of_compilation): Likewise. + * combine.c (setup_incoming_promotions): Likewise. + * tree-profile.c (tree_gen_ic_func_profiler): Likewise. + * tree-ssa-structalias.c (delete_points_to_sets): Likewise. + * passes.c (pass_inline_parameters): Update comments; remove + O0_alwaysinline pass. + (execute_one_ipa_transform_pass): Do not reset in_gimple_form. + (execute_one_pass): Likewise. + * i386.c (ix86_function_regparm): Remove unit-at-a-time check. + (ix86_function_sseregparm): Likewise. + * arm.c (arm_function_in_section_p): Likewise. + * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise. + * varpool.c: Update comments. + (decide_is_variable_needed): Remove unit-at-a-time checks. + (varpool_finalize_decl): Likewise. + +2008-07-24 Kaz Kojima <kkojima@gcc.gnu.org> + + * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer + to 2 instead of -1. + (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal + to 2. + +2008-07-24 Kai Tietz <kai.tietz@onevision.com> + + * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for + imp symbol extension. + + 2008-07-23 Ian Lance Taylor <iant@google.com> + + * tree-vrp.c (infer_value_range): Ignore asm statements when + looking for memory accesses for -fdelete-null-pointer-checks. + +2008-07-24 Ben Elliston <bje@au.ibm.com> + + * config/spu/spu-c.c (__vector_keyword): New variable. + (vector_keyword): Likewise. + (spu_categorize_keyword): New function. + (spu_macro_to_expand): Likewise. + (spu_cpu_cpp_builtins): Enable context-sensitive macros if not + compiling an ISO C dialect. + +2008-07-24 Ben Elliston <bje@au.ibm.com> + + * config/rs6000/rs6000-c.c: Move GTY(()) markers to match + conventional usage. + +2008-07-23 Aaron W. LaFramboise <aaronavay62@aaronwl.com> + + * configure: Regenerate. + * configure.ac: Require texinfo 4.7. + * doc/install.texi: Document texinfo 4.7 requirement. + +2008-07-23 Martin Jambor <mjambor@suse.cz> + + * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed + rather than for DECL_SAVED_TREE. + * ipa-prop.c: Include diagnostic.h. + (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs + thoroughly. + (ipa_detect_param_modifications): Function rewritten from scratch. + (ipa_compute_jump_functions): Changed accesses to modification flags. + (ipa_free_node_params_substructures): Update flags destruction. + (ipa_node_duplication_hook): Update flags duplication. + (ipa_print_all_params_modified): Updated flag access. + * ipa-prop.h (struct ipa_param_flags): New structure. + (struct ipa_node_params): New field modification_analysis_done, + modified_flags changed into param_flags. + (ipa_is_ith_param_modified): Changed to use new flags. + * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies. + + * ipa-prop.c (ipa_print_all_jump_functions): Moved here from + ipa-cp.c and split into two functions. + (ipa_print_node_jump_functions): New function. + (compute_scalar_jump_functions): New function. + (type_like_member_ptr_p): New function. + (compute_pass_through_member_ptrs): New function. + (fill_member_ptr_cst_jump_function): New function. + (determine_cst_member_ptr): New function. + (compute_cst_member_ptr_arguments): New function. + (ipa_compute_jump_functions): Complete rewrite. + * ipa-prop.h (enum jump_func_type): Make explicit that we depend + on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR. + (struct ipa_member_ptr_cst): New structure. + (union jump_func_value): New field member_cst. + * ipa-cp.c (ipcp_lat_is_insertable): New function. + (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled + jump function types. + (ipcp_print_all_lattices): Slight fprintf rearrangement. + (ipcp_print_all_structures): Call ipa_print_all_jump_functions + instead of ipcp_print_all_jump_functions. + (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps + only for replacable scalars. + + * doc/invoke.texi (Optimize options): Add description of + -findirect-inlining. + * common.opt (flag_indirect_inlining): New flag. + * opts.c (decode_options): Set flag_indirect_inlining when + optimize >= 3. + + * ipa-inline.c: Include ipa-prop.h. + (inline_indirect_intraprocedural_analysis): New function. + (inline_generate_summary): Allocate parameter and argument info + structures, call inline_indirect_intraprocedural_analysis on each + node when doing indirect inlining and deallocate indirect inlining + data structures in the end. + * ipa-prop.c (ipa_create_param_decls_array): Return if already done. + (free_all_ipa_structures_after_iinln): New function. + (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be + done. + * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies. + + * cgraphbuild.c (compute_call_stmt_bb_frequency): New function. + (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead + of computing the frequency separately. + (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead + of computing the frequency separately. + * ipa-cp.c (ipcp_print_all_structures): Replace a call to + ipa_print_all_param_modified with a call to ipa_print_all_param_flags. + * ipa-prop.c (ipa_get_member_ptr_load_param): New function. + (ipa_get_stmt_member_ptr_load_param): New function. + (ipa_is_ssa_with_stmt_def): New function. + (ipa_note_param_call): New function. + (ipa_analyze_call_uses): New function. + (ipa_analyze_stmt_uses): New function. + (ipa_analyze_params_uses): New function. + (ipa_free_node_params_substructures): Also free the param_calls linked + list. + (ipa_node_duplication_hook): Also duplicate the param_calls linked list. + (ipa_print_node_param_flags): New function. + (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags. + (ipa_print_all_param_flags): Calls ipa_print_node_param_flags. + * ipa-prop.h (struct ipa_param_flags): New field called. + (struct ipa_param_call_note): New structure. + (struct ipa_node_params): New fields param_calls and + uses_analysis_done. + (ipa_is_ith_param_called): New function. + * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call + ipa_analyze_params_uses and dump parameter flags. + + * ipa-inline.c (cgraph_decide_recursive_inlining): Call + ipa_propagate_indirect_call_infos if performing indirect inlining, + pass a new parameter new_edges to it. + (add_new_edges_to_heap): New fucntion. + (cgraph_decide_inlining_of_small_functions): New vector + new_indirect_edges for newly found indirect edges , call + ipa_propagate_indirect_call_infos after inlining. + (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after + inlining if performing indirect inlining. Call + free_all_ipa_structures_after_iinln when doing so too. + (inline_generate_summary): Do not call + free_all_ipa_structures_after_iinln here. + * ipa-prop.c (update_jump_functions_after_inlining): New function. + (print_edge_addition_message): New function. + (update_call_notes_after_inlining): New function. + (propagate_info_to_inlined_callees): New function. + (ipa_propagate_indirect_call_infos): New function. + * ipa-prop.h: Include cgraph.h + (struct ipa_param_call_note): Fields reordered, new field processed. + * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new + flag indirect_call. + * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have + rediscovered call statements. + * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero. + (dump_cgraph_node): Dump also the indirect_call flag. + (cgraph_clone_edge): Copy also the indirect_call flag. + * tree-inline.c (copy_bb): Do not check for fndecls from call + expressions, check for edge availability when moving clones. + (get_indirect_callee_fndecl): New function. + (expand_call_inline): If callee declaration is not apprent from + the statement, try calling get_indirect_callee_fndecl. Do not + issue warnings or call sorry when not inlinings an indirect edge. + * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies. + + * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a + bit more frandly to matching. + * testsuite/g++.dg/ipa/iinline-1.C: New testcase. + * testsuite/gcc.dg/ipa/iinline-1.c: New testcase. + * testsuite/gcc.dg/ipa/modif-1.c: New testcase. + +2008-07-23 Michael Meissner <gnu@the-meissners.org> + + PR 36907 + * opth-gen.awk: Suppress function specific features when building + target libraries. + * optc-gen.awk: Ditto. + +2008-07-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR 35058 + * diagnostic.c (pedwarn): Add opt parameter. + (pedwarn0): New. + * c-tree.h (pedwarn_init): Add opt parameter. + (pedwarn_c90): Likewise. + (pedwarn_c99): Likewise. + * c-errors.c (pedwarn_c99): Likewise. + (pedwarn_c90): Likewise. + * toplev.h (pedwarn): Update declaration. + (pedwarn0): Declare. + * c-lex.c: All calls to pedwarn changed. + * builtins.c: All calls to pedwarn changed. + * toplev.c: All calls to pedwarn changed. + * c-decl.c: All calls to pedwarn changed. + * c-typeck.c: All calls to pedwarn changed. + * c-common.c: All calls to pedwarn changed. + * c-parser.c: All calls to pedwarn changed. + +2008-07-23 Michael Meissner <gnu@the-meissners.org> + Karthik Kumar <karthikkumar@gmail.com> + + * attribs.c (file scope): Include c-common.h. + (decl_attributes): Add support for #pragma GCC optimize and + #pragma GCC option. + + * targhooks.c (default_can_inline_p): New function that is the + default for the TARGET_CAN_INLINE_P target hook. + + * targhooks.h (default_can_inline_p): Add declaration. + + * tree.c (cl_optimization_node): New static tree for building + OPTIMIZATION_NODE tree. + (cl_target_option_node): New static tree for building + TARGET_OPTION_NODE tree. + (cl_option_hash_table): New hash table for hashing + OPTIMIZATION_NODE and TARGET_OPTION_NODE trees. + (cl_option_hash_hash): New function to provide the hash value for + OPTIMIZATION_NODE and TARGET_OPTION_NODE trees. + (cl_option_hash_eq): New function to provide an equality test for + OPTIMIZATION_NODE and TARGET_OPTION_NODE trees. + (tree_code_size): Add support for OPTIMIZATION_NODE and + TARGET_OPTION_NODE trees. + (tree_code_structure): Add support for OPTIMIZATION_NODE and + TARGET_OPTION_NODE trees. + (build_optimization_node): Build a tree that has all of the + current optimization options. + (build_target_option_node): Build a tree that has the target + options that might be changed on a per function basis. + + * tree.h (file scope): Include options.h. + (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro. + (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto. + (TREE_OPTIMIZATION): Ditto. + (TREE_TARGET_SPECIFIC): Ditto. + (struct tree_function_decl): Add fields for remembering the + current optimization options and target specific options. + (struct tree_optimization_option): New tree variant that remembers + the optimization options. + (struct tree_target_option): New tree variant that remembers the + target specific flags that might change for compiling a particular + function. + (union tree_node): Include tree_optimization_option and + tree_target_option fields. + (enum tree_index): Add TI_OPTIMIZATION_DEFAULT, + TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD, + TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT, + TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA, + TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific + optimization and target options. + (optimization_default_node): New macro to refer to global_trees + field. + (optimization_current_node): Ditto. + (optimization_cold_node): Ditto. + (optimization_hot_node): Ditto. + (target_option_default_node): Ditto. + (target_option_current_node): Ditto. + (current_option_pragma): Ditto. + (current_optimize_pragma): Ditto. + + * target.h (struct gcc_target): Add valid_option_attribute_p, + target_option_save, target_option_restore, target_option_print, + target_option_pragma_parse, and can_inline_p hooks. + + * toplev.h (parse_optimize_options): Add declaration. + (fast_math_flags_struct_set_p): Ditto. + + * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to + adjust the current __OPTIMIZE__, etc. macros when #pragma GCC + optimize is used. + + * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call + tree_can_inline_p hook to see if one function can inline another. + (cgraph_decide_inlining): Ditto. + (cgraph_decide_inlining_incrementally): Ditto. + + * opts.c (decode_options): Add support for running multiple times + to allow functions with different target or optimization options + than was specified on the command line. + (fast_math_flags_struct_set_p): New function that is similar to + fast_math_flags_set_p, except it uses the values in the + cl_optimization structure instead of global variables. + + * optc-gen.awk: Add support for TargetSave to allow a back end to + declare new fields that need to be saved when using function + specific options. Include flags.h and target.h in the options.c + source. Add support for Save to indicate which options can be set + for individual functions. Generate cl_optimize_save, + cl_optimize_restore, cl_optimize_print, cl_target_option_save, + cl_target_option_restore, cl_target_option_print functions to + allow functions to use different optimization or target options. + + * opt-functions.awk (var_type_struct): Return the type used for + storing the field in a structure. + + * opth-gen.awk: Add support for TargetSave to allow a back end to + declare new fields that need to be saved when using function + specific options. Add support for Save to indicate which options + can be set for individual functions. Only generate one extern for + Mask fields. Generate cl_optimization and cl_target_option + structures to remember optimization and target options. + + * treestruct.def (TS_OPTIMIZATION): Add support for garbage + collecting new tree nodes. + (TS_TARGET_OPTION): Ditto. + + * c-decl.c (merge_decls): Merge function specific target and + optimization options. + + * function.c (invoke_set_current_function_hook): If the function + uses different optimization options, change the global variables + to reflect this. + + * coretypes.h (struct cl_optimization): Add forward reference. + (struct cl_target_option): Ditto. + + * c-pragma.c (option_stack): New static vector to remember the + current #pragma GCC option stack. + (handle_pragma_option): New function to support #pragma GCC option + to change target options. + (optimize_stack): New static vector to remember the current + #pragma GCC optimize stack. + (handle_pragma_optimize): New function to support #pragma GCC + optimize to change optimization options. + (init_pragma): Add support for #pragma GCC optimize and #pragma + GCC option. + + * tree.def (OPTIMIZATION_NODE): New tree code for remembering + optimization options. + (TARGET_OPTION_NODE): New tree code for remembering certain target + options. + + * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and + TARGET_OPTION_NODE trees. + + * common.opt (-O): Add Optimization flag. + (-Os): Ditto. + (-fmath-errno): Ditto. + (-falign-functions): Add UInteger flag to make sure flag gets full + int in cl_optimization structure. + (-falign-jumps): Ditto. + (-falign-labels): Ditto. + (-falign-loops): Ditto. + (-fsched-stalled-insns): Ditto. + (-fsched-stalled-insns-dep): Ditto. + + * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default + definition. + (TARGET_OPTION_SAVE): Ditto. + (TARGET_OPTION_RESTORE): Ditto. + (TARGET_OPTION_PRINT): Ditto. + (TARGET_OPTION_PRAGMA_PARSE): Ditto. + (TARGET_CAN_INLINE_P): Ditto. + (TARGET_INITIALIZER): Add new hooks. + + * tree-inline.c (tree_can_inline_p): New function to determine + whether one function can inline another. Check if the functions + use compatible optimization options, and also call the backend + can_inline_p hook. + + * tree-inline.h (tree_can_inline_p): Add declaration. + + * c-common.c (c_common_attribute): Add support for option and + optimize attributes. + (handle_option_attribute): Add support for the option attribute to + allow the user to specify different target options for compiling a + specific function. + (handle_optimize_attribute): Add support for the optimize + attribute to allow the user to specify different optimization + options for compiling a specific function. + (handle_hot_attribute): Turn on -O3 optimization for this one + function if it isn't the default optimization level. + (handle_cold_attribute): Turn on -Os optimization for this one + function if it insn't the default optimization. + (const_char_p): New const char * typedef. + (optimize_args): New static vector to remember the optimization + arguments. + (parse_optimize_options): New function to set up the optimization + arguments from either the optimize attribute or #pragma GCC + optimize. + + * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration. + (builtin_define_std): Ditto. + + * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages. + Add t-i386 Makefile fragment to add i386-c.o and i386.o + dependencies. + (x86_64-*-*): Ditto. + + * Makefile.in (TREE_H): Add options.h. + (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies. + + * doc/extend.texi (option attribute): Document new attribute. + (optimize attribute): Ditto. + (hot attribute): Document hot attribute sets -O3. + (cold attribute): Document cold attribute sets -Os. + (#pragma GCC option): Document new pragma. + (#pragma GCC optimize): Ditto. + + * doc/options.texi (TargetSave): Document TargetSave syntax. + (UInteger): Document UInteger must be used for certain flags. + (Save): Document Save option to create target specific options + that can be saved/restored on a function specific context. + + * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new + macro. + (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto. + + * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new + hook. + (TARGET_OPTION_SAVE): Ditto. + (TARGET_OPTION_RESTORE): Ditto. + (TARGET_OPTION_PRINT): Ditto. + (TARGET_OPTION_PRAGMA_PARSE): Ditto. + (TARGET_CAN_INLINE_P): Ditto. + + * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for + -mfpmath=sse,387. + (-mfpmath=both): Ditto. + +2008-07-23 Michael Meissner <gnu@the-meissners.org> + Karthik Kumar <karthikkumar@gmail.com> + + * config/i386/i386.h (TARGET_ABM): Move switch into + ix86_isa_flags. + (TARGET_POPCNT): Ditto. + (TARGET_SAHF): Ditto. + (TARGET_AES): Ditto. + (TARGET_PCLMUL): Ditto. + (TARGET_CMPXCHG16B): Ditto. + (TARGET_RECIP): Move switch into target_flags. + (TARGET_FUSED_MADD): Ditto. + (ix86_arch_features): Make an unsigned char type. + (ix86_tune_features): Ditto. + (OVERRIDE_OPTIONS): Add bool argument to override_options call. + (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros. + (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas. + + * config/i386/i386.opt (arch): New TargetSave field to define + fields that need to be saved for function specific option + support. + (tune): Ditto. + (fpmath): Ditto. + (branch_cost): Ditto. + (ix86_isa_flags_explicit): Ditto. + (tune_defaulted): Ditto. + (arch_specified): Ditto. + (-m128-long-double): Add Save flag to save option for target + specific option support. + (-m80387): Ditto. + (-maccumulate-outgoing-args): Ditto. + (-malign-double): Ditto. + (-malign-stringops): Ditto. + (-mfancy-math-387): Ditto. + (-mhard-float): Ditto. + (-mieee-fp): Ditto. + (-minline-all-stringops): Ditto. + (-minline-stringops-dynamically): Ditto. + (-mms-bitfields): Ditto. + (-mno-align-stringops): Ditto. + (-mno-fancy-math-387): Ditto. + (-mno-push-args): Ditto. + (-mno-red-zone): Ditto. + (-mpush-args): Ditto. + (-mred-zone): Ditto. + (-mrtd): Ditto. + (-msseregparm): Ditto. + (-mstack-arg-probe): Ditto. + (-m32): Ditto. + (-m64): Ditto. + (-mmmx): Ditto. + (-m3dnow): Ditto. + (-m3dnowa): Ditto. + (-msse): Ditto. + (-msse2): Ditto. + (-msse3): Ditto. + (-msse4.1): Ditto. + (-msse4.2): Ditto. + (-msse4): Ditto. + (-mno-sse4): Ditto. + (-msse4a): Ditto. + (-msse5): Ditto. + (-mrecip): Move flag into target_flags. + (-mcld): Ditto. + (-mno-fused-madd): Ditto. + (-mfused-madd): Ditto. + (-mabm): Move flag into ix86_isa_flags. + (-mcx16): Ditto. + (-mpopcnt): Ditto. + (-msahf): Ditto. + (-maes): Ditto. + (-mpclmul): Ditto. + + * config/i386/i386-c.c: New file for #pragma support. + (ix86_target_macros_internal): New function to #define or #undef + target macros based when the user uses the #pragma GCC option to + change target options. + (ix86_pragma_option_parse): New function to add #pragma GCC option + support. + (ix86_target_macros): Move defining the target macros here from + TARGET_CPU_CPP_BUILTINS in i386.h. + (ix86_register_pragmas): Register the #pragma GCC option hook. If + defined, initialize any subtarget #pragmas. + + * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from + REGISTER_TARGET_PRAGMAS. + + * config/i386/t-i386: New file for x86 dependencies. + (i386.o): Make dependencies mirror the include files used. + (i386-c.o): New file, add dependencies. + + * config/i386/i386-protos.h (override_options): Add bool + argument. + (ix86_valid_option_attribute_tree): Add declaration. + (ix86_target_macros): Ditto. + (ix86_register_macros): Ditto. + + * config/i386/i386.c (ix86_tune_features): Move initialization of + the target masks to initial_ix86_tune_features to allow functions + to have different target options. Make type unsigned char, + instead of unsigned int. + (initial_ix86_tune_features): New static vector to hold processor + masks for the tune variables. + (ix86_arch_features): Move initialization of the target masks to + initial_ix86_arch_features to allow functions to have different + target options. Make type unsigned char, instead of unsigned + int. + (initial_ix86_arch_features): New static vector to hold processor + masks for the arch variables. + (enum ix86_function_specific_strings): New enum to describe the + string options used for attribute((option(...))). + (ix86_target_string): New function to return a string that + describes the target options. + (ix86_debug_options): New function to print the current options in + the debugger. + (ix86_function_specific_save): New function hook to save the + function specific global variables in the cl_target_option + structure. + (ix86_function_specific_restore): New function hook to restore the + function specific variables from the cl_target_option structure to + the global variables. + (ix86_function_specific_print): New function hook to print the + target specific options in the cl_target_option structure. + (ix86_valid_option_attribute_p): New function hook to validate + attribute((option(...))) arguments. + (ix86_valid_option_attribute_tree): New function that is common + code between attribute((option(...))) and #pragma GCC option + support that parses the options and returns a tree holding the + options. + (ix86_valid_option_attribute_inner_p): New helper function for + ix86_valid_option_attribute_tree. + (ix86_can_inline_p): New function hook to decide if one function + can inline another on a target specific basis. + (ix86_set_current_function); New function hook to switch target + options if the user used attribute((option(...))) or #pragma GCC + option. + (ix86_tune_defaulted): Move to static file scope from + override_options. + (ix86_arch_specified): Ditto. + (OPTION_MASK_ISA_AES_SET): New macro for moving switches into + ix86_isa_flags. + (OPTION_MASK_ISA_PCLMUL_SET): Ditto. + (OPTION_MASK_ISA_ABM_SET): Ditto. + (OPTION_MASK_ISA_POPCNT_SET): Ditto. + (OPTION_MASK_ISA_CX16_SET): Ditto. + (OPTION_MASK_ISA_SAHF_SET): Ditto. + (OPTION_MASK_ISA_AES_UNSET): Ditto. + (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto. + (OPTION_MASK_ISA_ABM_UNSET): Ditto. + (OPTION_MASK_ISA_POPCNT_UNSET): Ditto. + (OPTION_MASK_ISA_CX16_UNSET): Ditto. + (OPTION_MASK_ISA_SAHF_UNSET): Ditto. + (struct ptt): Move to static file scope from override_options. + (processor_target_table): Ditto. + (cpu_names): Ditto. + (ix86_handle_option): Add support for options that are now isa + options. + (override_options): Add support for declaring functions that + support different target options than were specified on the + command line. Move struct ptt, processor_target_table, cpu_names, + ix86_tune_defaulted, ix86_arch_specified to static file scope. + Add bool argument. Fix up error messages so the appropriate error + is given for either command line or attribute. + (ix86_previous_fndecl): New static to remember previous function + declaration to see if we need to change target options. + (ix86_builtins_isa): New array to record the ISA of each builtin + function. + (def_builtin): Always create the builtin function, even if the + current ISA doesn't support it. + (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL + tests for those builtins. + (ix86_init_builtins): Remove TARGET_MMX test for calling + ix86_init_mmx_sse_builtins. + (ix86_expand_builtin): If the current ISA doesn't support a given + builtin, signal an error. + (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook. + (TARGET_SET_CURRENT_FUNCTION): Ditto. + (TARGET_OPTION_SAVE): Ditto. + (TARGET_OPTION_RESTORE): Ditto. + (TARGET_OPTION_PRINT): Ditto. + (TARGET_CAN_INLINE_P): Ditto. + +2008-07-22 Rafael Avila de Espindola <espindola@google.com> + + * c-typeck.c (build_external_ref): Don't call assemble_external. + * final.c (output_operand): Call assemble_external. + 2008-07-21 DJ Delorie <dj@redhat.com> * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New. |