1. 02 Sep, 2008 20 commits
    • re PR tree-optimization/36766 (natGC.cc:229: internal compiler error: Segmentation fault) · 833ee764
      	PR tree-optimization/36766
      	* tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
      	for already removed basic blocks.
      
      	* g++.dg/tree-ssa/pr36766.C: New test.
      
      From-SVN: r139908
      Jakub Jelinek committed
    • re PR testsuite/36332 (FAIL: gcc.dg/torture/type-generic-1.c execution test on powerpc-*) · c83c7e7e
      	PR target/36332
      	* real.c (real_maxval): Clear a lower bit to make real_maxval
      	match get_max_float for IBM long double format.
      
      	* gcc.c-torture/execute/ieee/pr36332.c: New test.
      
      From-SVN: r139906
      Jakub Jelinek committed
    • configure.ac: Use m4_quote to quote the expansion of m4_do. · 75c9cbe3
      * configure.ac: Use m4_quote to quote the expansion of m4_do.
      * configure: Regenerate.
      
      From-SVN: r139905
      Andreas Schwab committed
    • re PR c/37171 (Canonical spelling optimization dependency) · ef66fb29
      	PR c/37171
      	* g++.dg/ext/attrib34.C: New test.
      
      From-SVN: r139904
      Jakub Jelinek committed
    • simplify-rtx.c (simplify_binary_operation_1): Check for CONST... · dd59ef13
      gcc/
      	* simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
      	SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
      	checking for a non-VOID CONSTANT_P.
      
      From-SVN: r139903
      Richard Sandiford committed
    • * predict.c (pass_strip_predict_hints): Avoid bugs dump file. · edcfeaee
      From-SVN: r139898
      Jan Hubicka committed
    • expr.c (emit_group_store): Don't assert stack temp mode size. · e0978eba
      2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* expr.c (emit_group_store): Don't assert stack temp mode size.
      
      From-SVN: r139894
      H.J. Lu committed
    • backport: configure: Regenerate. · f8bf9252
      2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
      	    Tobias Grosser  <grosser@fim.uni-passau.de>
      	    Jan Sjodin  <jan.sjodin@amd.com>
      	    Harsha Jagasia  <harsha.jagasia@amd.com>
      	    Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
      	    Konrad Trifunovic  <konrad.trifunovic@inria.fr>
      	    Adrien Eliche  <aeliche@isty.uvsq.fr>
      
      	Merge from graphite branch.
      	* configure: Regenerate.
      	* Makefile.in: Regenerate.
      	* configure.ac (host_libs): Add ppl and cloog.
      	Add checks for PPL and CLooG.
      	* Makefile.def (ppl, cloog): Added modules and dependences.
      	* Makefile.tpl (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): New.
      	(HOST_PPLLIBS, HOST_PPLINC, HOST_CLOOGLIBS, HOST_CLOOGINC): New.
      
      gcc/
      	* graphite.c: New.
      	* graphite.h: New.
      	* tree-loop-linear.c (perfect_loop_nest_depth): Export.
      	* doc/invoke.texi (-floop-block, -floop-interchange,
      	-floop-strip-mine): Document new flags.
      	* tree-into-ssa.c (gimple_vec): Moved...
      	* tree-loop-distribution.c (rdg_component): Moved...
      	* cfgloopmanip.c: Include tree-flow.h.
      	(update_dominators_in_loop): New.
      	(create_empty_if_region_on_edge): New.
      	(create_empty_loop_on_edge): New.
      	(loopify): Use update_dominators_in_loop.
      	* tree-pass.h (pass_graphite_transforms): Declared.
      	* configure: Regenerate.
      	* tree-phinodes.c (make_phi_node): Export.
      	(add_phi_node_to_bb): New, split from create_phi_node.
      	* tree-chrec.c (for_each_scev_op): New.
      	* tree-chrec.h (for_each_scev_op): Declared.
      	* tree-ssa-loop-ivopts.c (get_phi_with_result): New.
      	(remove_statement): Call get_phi_with_result.
      	* config.in (HAVE_cloog): Undef.
      	* gdbinit.in (pgg): New.
      	* timevar.def (TV_GRAPHITE_TRANSFORMS): New.
      	* tree-ssa-loop.c (graphite_transforms): New.
      	(gate_graphite_transforms): New.
      	(pass_graphite_transforms): New.
      	* configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
      	HAVE_cloog): Defined.
      	* tree-vectorizer.c (rename_variables_in_bb): Export.
      	* tree-data-ref.c (dr_may_alias_p): Export.
      	(stmt_simple_memref_p): New.
      	(find_data_references_in_stmt): Export.
      	(find_data_references_in_loop): Export.
      	(create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
      	(create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
      	(create_rdg_vertices): Export.
      	(build_empty_rdg): New.
      	(build_rdg): Call build_empty_rdg.  Free dependence_relations.
      	* tree-data-ref.h (rdg_component): ... here.
      	(scop_p): New.
      	(struct data_reference): Add a field scop.
      	(DR_SCOP): New.
      	(find_data_references_in_loop): Declared.
      	(find_data_references_in_stmt): Declared.
      	(create_rdg_vertices): Declared.
      	(dr_may_alias_p): Declared.
      	(stmt_simple_memref_p): Declared.
      	(struct rdg_edge): Add a field ddr_p relation.
      	(build_empty_rdg): Declared.
      	* lambda.h (lambda_matrix): Declare a VEC of.
      	(find_induction_var_from_exit_cond): Declared.
      	(lambda_vector_compare): New.
      	* common.opt (fgraphite, floop-strip-mine,
      	floop-interchange, floop-block): New flags.
      	* lambda-code.c (find_induction_var_from_exit_cond): Export.
      	* cfgloop.c (is_loop_exit): New.
      	* cfgloop.h (is_loop_exit): Declared.
      	(create_empty_if_region_on_edge): Declared.
      	(create_empty_loop_on_edge): Declared.
      	* tree-flow.h (add_phi_node_to_bb): Declared.
      	(make_phi_node): Declared.
      	(rename_variables_in_bb): Declared.
      	(perfect_loop_nest_depth): Declared.
      	(graphite_transform_loops): Declared.
      	* Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
      	(graphite.o-warn): Add -Wno-error.
      	(PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
      	(LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
      	(INCLUDES): Add PPLINC, CLOOGINC.
      	(OBJS-common): Add graphite.o.
      	(graphite.o): Add rule.
      	* gimple.h (gimple_vec): ... here.
      	* tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
      	* passes.c (init_optimization_passes): Schedule 
      	pass_graphite_transforms.
      
      testsuite/
      
      	* gcc.dg/graphite/scop-{0,1,2,3,4,5,6,7,8,9,
      	10,11,12,13,14,15,16,17,18}.c: New.
      	* gcc.dg/graphite/graphite.exp: New.
      	* gcc.dg/graphite/scop-matmult.c: New.
      	* gcc.dg/graphite/block-0.c: New.
      	* lib/target-supports.exp (check_effective_target_fgraphite): New.
      	* gfortran.dg/graphite/block-1.f90: New.
      	* gfortran.dg/graphite/scop-{1,2}.f: New.
      	* gfortran.dg/graphite/block-{1,3,4}.f90: New.
      	* gfortran.dg/graphite/graphite.exp: New.
      
      
      Co-Authored-By: Adrien Eliche <aeliche@isty.uvsq.fr>
      Co-Authored-By: Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
      Co-Authored-By: Harsha Jagasia <harsha.jagasia@amd.com>
      Co-Authored-By: Jan Sjodin <jan.sjodin@amd.com>
      Co-Authored-By: Konrad Trifunovic <konrad.trifunovic@inria.fr>
      Co-Authored-By: Tobias Grosser <grosser@fim.uni-passau.de>
      
      From-SVN: r139893
      Sebastian Pop committed
    • re PR target/37283 (Cannot build crtbegin.o for ARM) · 57b08d04
          gcc/
      	PR target/37283
      	* opts.c (decode_options): Move processing of -fno-unit-at-a-time
      	and -fno-toplevel-reorder after handle_options.
      
      From-SVN: r139892
      Samuel Tardieu committed
    • arm.c (arm_tune_cortex_a9): Define. · 7612f14d
      2008-09-02  Paul Brook  <paul@codesourcery.com>
      
      	* config/arm/arm.c (arm_tune_cortex_a9): Define.
      	(arm_override_options): Set arm_tune_cortex_a9.
      	(arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
      	(arm_issue_rate): Handle cortexa9.
      	* config/arm/arm.h (arm_tune_cortex_a9): Declare.
      	* config/arm/arm-cores.def: Add cortex-a9.
      	* config/arm/arm-tune.md: Regenerate.
      	* config/arm/arm.md: Include cortex-a9.md.
      	(generic_sched, generic_vfp): Add cortexa9.
      	* config/arm/cortex-a9.md: New file.
      
      From-SVN: r139891
      Paul Brook committed
    • re PR tree-optimization/37327 (another ice in set_value_range, at tree-vrp.c:397) · a1b969a0
      2008-09-02  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/37327
      	* tree-vrp.c (register_new_assert_for): Make sure to not have
      	TREE_OVERFLOW set on the bound.
      
      	* gcc.c-torture/compile/pr37327.c: New testcase.
      
      From-SVN: r139890
      Richard Guenther committed
    • Fixed typo in date of the 2008-09-01 MOVE_RATIO commit. · 7ab5df48
      2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
      
              Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
      
              * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
              * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
              spec_info->mask.
      
      From-SVN: r139889
      Andrey Belevantsev committed
    • spu.md (divdf3): Removed. · f6d5e84a
      2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
      
        * gcc/config/spu/spu.md (divdf3): Removed.
      
      Testsuite Changelog:
      
        * gcc.dg/fastmath-2.c: New.
      
      From-SVN: r139888
      Victor Kaplansky committed
    • re PR tree-optimization/37095 (Trouble with covariant return) · 1aeaf0f7
      	PR tree-optimization/37095
      	* cgraph.c (cgraph_node): When creating new cgraph node after
      	assembler_name_hash has been populated, record it in the hash
      	table.
      
      	* g++.dg/inherit/thunk9.C: New test.
      
      From-SVN: r139887
      Jakub Jelinek committed
    • re PR fortran/37228 (F2008: Support g0.<d> edit descriptor) · 900e887f
      2008-09-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/37228
      	* io.c (check_format): Allow specifying precision with g0 format.
      
      2008-09-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libfortran/37301
      	PR libfortran/37228
      	* io/io.h (write_real_g0): Declare new function to handle g0.d format.
      	* io/transfer.c (formatted_transfer_scalar): Use new function.
      	* io/format.c (parse_format_list): Enable g0.d.
      	* io/write.c (write_a_char4): Delete unused var.
      	(set_fnode_default): New function to set the default fnode w, d, and e
      	factored from write_real. (write_real): Use new factored function.
      	(write_real_g0): New function that sets d to that passed by g0.d format
      	specifier and set format to ES.  Default values for w and e are used
      	from the new function, set_fnode_default.
      
      2008-09-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/37228
      	* gfortran.dg/fmt_g0_4.f08: Revised test.
      
      From-SVN: r139886
      Jerry DeLisle committed
    • gfortran.h (struct gfc_namespace): New member `implicit_loc'. · 52f49934
      2008-09-02  Daniel Kraft  <d@domob.eu>
      
      	* gfortran.h (struct gfc_namespace): New member `implicit_loc'.
      	(gfc_add_abstract): New method.
      	* decl.c (gfc_get_type_attr_spec): Match ABSTRACT attribute.
      	(gfc_match_derived_decl): Copy abstract attribute in derived symbol.
      	* dump-parse-tree.c (show_attr): Show ABSTRACT attribute as `ABSTRACT'
      	only to allow for ABSTRACT types.
      	* parse.c (parse_interface): Use new gfc_add_abstract.
      	* primary.c (gfc_match_structure_constructor): Check that no ABSTRACT
      	type is constructed.
      	* resolve.c (resolve_typespec_used): New method.
      	(resolve_fl_derived): Check type in respect to ABSTRACT attribute and
      	check that no component is of an ABSTRACT type.
      	(resolve_symbol): Check that no symbol is of an ABSTRACT type.
      	(resolve_types): Check IMPLICIT declarations for ABSTRACT types.
      	* symbol.c (gfc_merge_new_implicit): Remember loci of IMPLICIT's.
      	(gfc_add_abstract): New method.
      
      2008-09-02  Daniel Kraft  <d@domob.eu>
      
      	* gfortran.dg/abstract_type_1.f90: New test.
      	* gfortran.dg/abstract_type_2.f03: New test.
      	* gfortran.dg/abstract_type_3.f03: New test.
      	* gfortran.dg/abstract_type_4.f03: New test.
      
      From-SVN: r139885
      Daniel Kraft committed
    • invoke.texi: Document -mword-relocations. · 571191af
      2008-09-01  Paul Brook  <paul@codesourcery.com>
      
      	* doc/invoke.texi: Document -mword-relocations.
      	* config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
      	* config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
      	* config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
      	* config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
      	(arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
      	(arm_emit_movpair): New function.
      	(arm_print_operand <c>): Handle sybolic addresses.
      	* config/arm/arm.h (TARGET_USE_MOVT): Define.
      	(TARGET_DEFAULT_WORD_RELOCATIONS): Define.
      	* config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
      	* config/arm/arm.opt: Add -mword-relocations.
      	* config/arm/arm.md (movsi): Use arm_emit_movpair.
      	(arm_movt, arm_movw): New.
      
      From-SVN: r139881
      Paul Brook committed
    • error.c: Fix cast for printf. · 4e2eb53c
      2008-09-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	* runtime/error.c: Fix cast for printf.
      
      From-SVN: r139880
      Jerry DeLisle committed
    • Daily bump. · 4385cc71
      From-SVN: r139878
      GCC Administrator committed
  2. 01 Sep, 2008 20 commits
    • type_traits (__make_unsigned_selector<>): Consider enums of size smaller than short. · a0230468
      	* include/std/type_traits (__make_unsigned_selector<>): Consider
      	enums of size smaller than short.
      	(__make_signed_selector<>): Likewise.
      	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
      	Adjust line numbers.
      	* testsuite/20_util/make_usigned/requirements/typedefs_neg.cc:
      	Adjust line numbers.
      	* testsuite/20_util/make_signed/requirements/typedefs-2.cc:
      	Ensure test_enum is the same size as short.
      	* testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
      	Ensure test_enum is the same size as short.
      
      From-SVN: r139875
      Mark Mitchell committed
    • arm.c (arm_override_options): Set arm_abi earlier. · 26272ba2
      2008-09-01  Paul Brook  <paul@codesourcery.com>
      
      	gcc/
      	* config/arm/arm.c (arm_override_options): Set arm_abi earlier.
      	Allow Interworking on ARMv4 EABI based targets.
      	* config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
      	(SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
      
      From-SVN: r139874
      Paul Brook committed
    • thumb2.md (thumb2_negscc): Match the correct operand for optimized LT0 test. · 48c23a6c
      2008-09-01  Paul Brook  <paul@codesourcery.com>
      
      	gcc/
      	* config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
      	optimized LT0 test.  Remove optimization for GT.
      
      From-SVN: r139873
      Paul Brook committed
    • pa64-hpux.h (LIB_SPEC): Link against librt when building static openmp applications. · 4b738718
      	* pa64-hpux.h (LIB_SPEC): Link against librt when building static
      	openmp applications.
      	* pa-hpux11.h (LIB_SPEC): Likewise.
      
      From-SVN: r139870
      John David Anglin committed
    • ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is defined. · 89ceba31
      	* ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
      	defined.
      
      From-SVN: r139869
      John David Anglin committed
    • predict.c (maybe_hot_count_p, [...]): When profile is present, use only counts;… · ba623ced
      predict.c (maybe_hot_count_p, [...]): When profile is present, use only counts; when guessed use only frequencies.
      
      	* predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
      	present, use only counts; when guessed use only frequencies.
      	(estimate_bb_frequencies): Use function_frequency.
      	* profile.c (compute_branch_probabilities): Exit early when
      	profile reading failed. Set profile_status.
      	(branch_prob): Do not set profile_status.
      
      From-SVN: r139868
      Jan Hubicka committed
    • tree.c (protected_set_expr_location): New. · 6a3799eb
              * tree.c (protected_set_expr_location): New.
              * tree.h (protected_set_expr_location): New prototype.
              * c-tree.h (build_array_ref): Add argument.
              (parser_build_unary_op): Same.
              * c-typeck.c (build_indirect_ref): Handle new location argument.
              (build_array_ref): Same.
              (parser_build_unary_op): Same.
              * gimplify.c (gimplify_asm_expr): Set input_location before calling
              error.
              * c-omp.c (c_finish_omp_atomic): Pass location when calling
              build_indirect_ref.
              * c-common.c (finish_label_address_expr): Handle new location
              argument.
              * c-common.h (build_indirect_ref): Add argument.
              (finish_label_address_expr): Same.
              * c-parser.c (c_parser_unary_expression): Pass location to build
              functions.
              (c_parser_postfix_expression): Same.
      objc/
              * objc-act.c (build_typed_selector_reference): Pass input_location to
              build_unary_op calls.
              (build_selector_reference): Same, but to build_array_ref.
              (objc_substitute_decl): Same.
              (build_ivar_reference): Same, but to build_indirect_ref.
              (get_super_receiver): Same.
      testsuite/
              * gcc.dg/20010516-1.c: Test for columns.
      cp/
              * typeck.c (build_x_indirect_ref): Add location argument.
              * class.c (build_base_path): Pass location to build_indirect_ref.
              * pt.c (tsubst_copy_and_build): Pass location to
              finish_label_address_expr.
              * parser.c (cp_parser_unary_expression): Same.
      
      From-SVN: r139867
      Aldy Hernandez committed
    • re PR fortran/37193 ("USE mod, ONLY: i, i=>j" does not import "i") · 3e1e5626
      2008-09-01  Daniel Kraft  <d@domob.eu>
      
      	PR fortran/37193
      	* module.c (read_module): Initialize use_only flag on used symbols.
      
      2008-09-01  Daniel Kraft  <d@domob.eu>
      
      	PR fortran/37193
      	* gfortran.dg/use_rename_4.f90: New test.
      	* gfortran.dg/use_rename_5.f90: New test.
      
      From-SVN: r139866
      Daniel Kraft committed
    • arm.md: Include cortex-r4f.md. · 51c69ddb
      2008-09-01  Paul Brook  <paul@codesourcery.com>
      
      	gcc/
      	* config/arm/arm.md: Include cortex-r4f.md.
      	(attr fpu): Update type list.
      	(attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
      	fconstd, fcmps and fcmpd. 
      	(attr tune_cortexr4): Define.
      	(attr generic_sched, attr generic_vfp): Use tune_cortexr4.
      	* config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
      	fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
      	* config/arm/arm.c (arm_issue_rate): Add cortexr4f.
      	* config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn
      	types.
      	* config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
      	cortex_a8_vfp_farith: Ditto.
      	* config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
      	* config/arm/cortex-r4.md: Use tune_cortexr4.
      	* config/arm/cortex-r4f.md: New file.
      
      From-SVN: r139865
      Paul Brook committed
    • re PR tree-optimization/37305 (ice in set_value_range, at tree-vrp.c:397) · ff8b183b
      2008-09-01  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/37305
      	* tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
      	the result of constant conversions.
      	(fold_gimple_assign): Likewise.
      
      	* gcc.c-torture/compile/pr37305.c: New testcase.
      
      From-SVN: r139864
      Richard Guenther committed
    • sel-sched-ir.c (cmp_v_in_regset_pool): Surround with #ifdef ENABLE_CHECKING. · 68ad446f
              * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
              #ifdef ENABLE_CHECKING.
      
      From-SVN: r139863
      Andrey Belevantsev committed
    • sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING. · dfb0e60d
              * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
              * sched-int.h (print_insn, print_pattern, print_value): Declare also
              when !INSN_SCHEDULING.
      
      From-SVN: r139862
      Andrey Belevantsev committed
    • * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update. · 8a88c276
      From-SVN: r139861
      Andreas Schwab committed
    • arm.c (arm_no_early_mul_dep): Handle multiply-subtract. · 756f763b
      2008-09-01  Paul Brook  <paul@codesourcery.com>
      
      	gcc/
      	* config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
      
      From-SVN: r139860
      Paul Brook committed
    • re PR tree-optimization/36449 (Incorrect code generated for access to a large struct) · 840018d9
      	PR middle-end/36449
      	* g++.dg/opt/pr36449.C: New test.
      
      From-SVN: r139859
      Jakub Jelinek committed
    • gfc-internals.texi (F2003 OOP), [...]): New chapter and section to document the… · a64a8f2f
      gfc-internals.texi (F2003 OOP), [...]): New chapter and section to document the internals of type-bound procedures.
      
      2008-09-01  Daniel Kraft  <d@domob.eu>
      
      	* gfc-internals.texi (F2003 OOP), (Type-bound Procedures): New chapter
      	and section to document the internals of type-bound procedures.
      	(gfc_expr): Document EXPR_COMPCALL.
      	* gfortran.h (struct gfc_expr): Remove unused `derived' from compcall.
      	* dump-parse-tree.c (show_compcall): New method.
      	(show_expr): Call it for EXPR_COMPCALL.
      	(show_typebound), (show_f2k_derived): New methods.
      	(show_symbol): Call show_f2k_derived.
      	(show_code_node): Handle EXEC_COMPCALL.
      	* primary.c (gfc_match_varspec): Don't initialize removed `derived' in
      	primary->value.compcall.
      
      From-SVN: r139857
      Daniel Kraft committed
    • expr.c (MOVE_BY_PIECES_P, [...]): Pass speed operand. · e04ad03d
      
      	* expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
      	* expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
      	* gimplify.c (gimplify_init_constructor): Add speed operand.
      	* tree-sra.c (decide_block_copy): Likewise.
      	* tree-inline.c (estimate_move_cost): Likewise.
      	* config/alpha/alpha.h (MOVE_RATIO): Update.
      	* config/frv/frv.c (MOVE_RATIO): Update.
      	* config/spu/spu.h (MOVE_RATIO): Update.
      	* config/sparc/sparc.h (MOVE_RATIO): Update.
      	* config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
      	* config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
      	* config/cris/cris.h (MOVE_RATIO): Update.
      	* config/mn10300/mn10300.h (MOVE_RATIO): Update.
      	* config/arm/arm.h (MOVE_RATIO): Update.
      	* config/pa/pa.md: Update uses of MOVE_RATIO
      	* config/pa/pa.h (MOVE_RATIO): Update.
      	* config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
      	* config/h8300/h8300.h (MOVE_RATIO): Update.
      	* config/v850/v850.h (MOVE_RATIO): Update.
      	* config/bfin/bfin.h (MOVE_RATIO): Update.
      
      From-SVN: r139855
      Jan Hubicka committed
    • sel-sched.h, [...]: New files. · e855c69d
      2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
              Dmitry Melnik  <dm@ispras.ru>
              Dmitry Zhurikhin  <zhur@ispras.ru>
              Alexander Monakov  <amonakov@ispras.ru>
              Maxim Kuvyrkov  <maxim@codesourcery.com>
      
      	* sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
      	sel-sched-dump.c, sel-sched-ir.c: New files.
      	* Makefile.in (OBJS-common): Add selective scheduling object
      	files.
      	(sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
      	(SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
      	(sched-vis.o): Add dependency on $(INSN_ATTR_H).
      	* cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
      	* cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
      	(make_forwarder_block): Update loop latch if we have redirected
      	the loop latch edge.
      	* cfgloop.c (get_loop_body_in_custom_order): New function.
      	* cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
      	(CP_FALLTHRU_PREHEADERS): Likewise.
      	(get_loop_body_in_custom_order): Declare.
      	* cfgloopmanip.c (has_preds_from_loop): New.
      	(create_preheader): Honor CP_FALLTHRU_PREHEADERS.
      	Assert that the preheader edge will be fall thru when it is set.
      	* common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
      	fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
      	fsel-sched-substitution, fselective-scheduling): New flags.
          	* cse.c (hash_rtx_cb): New.
      	(hash_rtx): Use it.
      	* dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
      	sel_sched_insn_cnt): New counters. 
      	* final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
      	* genattr.c (main): Output maximal_insn_latency prototype.
      	* genautomata.c (output_default_latencies): New. Factor its code from ...
      	(output_internal_insn_latency_func): ... here.
      	(output_internal_maximal_insn_latency_func): New.
      	(output_maximal_insn_latency_func): New.
      	* hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
      	(struct hard_reg_set_iterator): New.
      	(hard_reg_set_iter_init, hard_reg_set_iter_set,
      	hard_reg_set_iter_next): New functions.
      	(EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
      	* lists.c (remove_free_INSN_LIST_node,
      	remove_free_EXPR_LIST_node): New functions.
      	* loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
      	set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
      	(loop_optimizer_finalize): Do not verify flow info after reload.
      	* recog.c (validate_replace_rtx_1): New parameter simplify.
      	Default it to true.  Update all uses.  Factor out simplifying
      	code to ...
      	(simplify_while_replacing): ... this new function.
      	(validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): New.
      	* recog.h (validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): Declare.
      	* rtl.c (rtx_equal_p_cb): New.
      	(rtx_equal_p): Use it.
      	* rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
      	(remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
      	debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
      	* vecprim.h: Add a vector type for unsigned int. 
      	* haifa-sched.c: Include vecprim.h and cfgloop.h.
      	(issue_rate, sched_verbose_param, note_list, dfa_state_size,
      	ready_try, cycle_issued_insns, spec_info): Make global.
      	(readyp): Initialize.
      	(dfa_lookahead): New global variable.
      	(old_max_uid, old_last_basic_block): Remove.
      	(h_i_d): Make it a vector.
      	(INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
      	through HID macro.
      	(after_recovery, adding_bb_to_current_region_p):
      	New variables to handle correct insertion of the recovery code.
      	(struct ready_list): Move declaration to sched-int.h.
      	(rgn_n_insns): Removed.
      	(rtx_vec_t): Move to sched-int.h.
      	(find_insn_reg_weight): Remove.
      	(find_insn_reg_weight1): Rename to find_insn_reg_weight.
      	(haifa_init_h_i_d, haifa_finish_h_i_d):
      	New functions to initialize / finalize haifa instruction data.
      	(extend_h_i_d, init_h_i_d): Rewrite.
      	(unlink_other_notes): Move logic to add_to_note_list.  Handle
      	selective scheduler.
      	(ready_lastpos, ready_element, ready_sort, reemit_notes,
      	find_fallthru_edge): Make global, remove static prototypes.
      	(max_issue): Make global.  Add privileged_n and state parameters.  Use
      	them.  
      	(extend_global, extend_all): Removed.
      	(init_before_recovery): Add new param.  Fix the handling of the case
      	when we insert a recovery code before the EXIT which has a predecessor
      	with a fallthrough edge to it.
      	(create_recovery_block): Make global.  Rename to
      	sched_create_recovery_block.  Update.
      	(change_pattern): Rename to sched_change_pattern.  Make global.
      	(speculate_insn): Rename to sched_speculate_insn.  Make global.
      	Split haifa-specific functionality into ...
      	(haifa_change_pattern): New static function.
      	(sched_extend_bb): New static function.
      	(sched_init_bbs): New function.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(insn_cost): Adjust for selective scheduling.
      	(dep_cost_1): New function.  Move logic from ...
      	(dep_cost): ... here.
      	(dep_cost): Use dep_cost_1.
      	(contributes_to_priority_p): Use sched_deps_info instead of
      	current_sched_info.
      	(priority): Adjust to work with selective scheduling.  Process the
      	corner case when all dependencies don't contribute to priority.
      	(rank_for_schedule): Use ds_weak instead of dep_weak.
      	(advance_state): New function.  Move logic from ...
      	(advance_one_cycle): ... here.
      	(add_to_note_list, concat_note_lists): New functions.
      	(rm_other_notes): Make static.  Adjust for selective scheduling.
      	(remove_notes, restore_other_notes): New functions.
      	(move_insn): Add two arguments.  Update assert.  Don't call
      	reemit_notes.
      	(choose_ready): Remove lookahead variable, use dfa_lookahead.
      	Remove more_issue, max_points.  Move the code to initialize
      	max_lookahead_tries to max_issue.
      	(schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
      	ready.  Adjust use of move_insn.  Call restore_other_notes.
      	(luid): Remove.
      	(sched_init, sched_finish): Move Haifa-specific initialization/
      	finalization to ...
      	(haifa_sched_init, haifa_sched_finish): ... respectively.
      	New functions.
      	(setup_sched_dump): New function.
      	(haifa_init_only_bb): New static function.
      	(haifa_speculate_insn): New static function.
      	(try_ready): Use haifa_* instead of speculate_insn and
      	change_pattern.
      	(extend_ready, extend_all): Remove.
      	(sched_extend_ready_list, sched_finish_ready_list): New functions.
      	(create_check_block_twin, add_to_speculative_block): Use
      	haifa_insns_init instead of extend_global.  Update to use new
      	initialization functions.  Change parameter.  Factor out code from
      	create_check_block_twin to ...
      	(sched_create_recovery_edges) ... this new function.
      	(add_block): Remove.
      	(sched_scan_info): New.
      	(extend_bb): Use sched_scan_info.
      	(init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
      	static functions for walking through scheduling region.
      	(sched_luids): New vector variable to replace uid_to_luid.
      	(luids_extend_insn): New function.
      	(sched_max_luid): New variable.
      	(luids_init_insn): New function.
      	(sched_init_luids, sched_finish_luids): New functions.
      	(insn_luid): New debug function.
      	(sched_extend_target): New function.
      	(haifa_init_insn): New static function.
      	(sched_init_only_bb): New hook.
      	(sched_split_block): New hook.
      	(sched_split_block_1): New function.
      	(sched_create_empty_bb): New hook.
      	(sched_create_empty_bb_1): New function.	
      	(common_sched_info, ready): New global variables.
      	(current_sched_info_var): Remove.
      	(move_block_after_check): Use common_sched_info.		
      	(haifa_luid_for_non_insn): New static function.	
      	(init_before_recovery): Use haifa_init_only_bb instead of
      	add_block.
      	(increase_insn_priority): New.
      	* modulo-sched.c: (issue_rate): Remove static declaration.
      	(sms_sched_info): Change type to haifa_sched_info.
      	(sms_sched_deps_info, sms_common_sched_info): New variables.
      	(setup_sched_infos): New.
      	(sms_schedule): Initialize them.  Call haifa_sched_init/finish.
      	Do not call regstat_free_calls_crossed.
      	(sms_print_insn): Use const_rtx.
      	* params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
      	PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
      	PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
      	PARAM_SCHED_MEM_TRUE_DEP_COST): New.
      	* sched-deps.c (sched_deps_info): New.  Update all relevant uses of
      	current_sched_info to use it.
      	(enum reg_pending_barrier_mode): Move to sched-int.h.
      	(h_d_i_d): New variable. Initialize to NULL.
      	({true, output, anti, spec, forward}_dependency_cache): Initialize
      	to NULL.
      	(estimate_dep_weak): Remove static declaration.
      	(sched_has_condition_p): New function.  Adjust users of
      	sched_get_condition to use it instead.
      	(conditions_mutex_p): Add arguments indicating which conditions are
      	reversed.  Use them.
      	(sched_get_condition_with_rev): Rename from sched_get_condition.  Add
      	argument to indicate whether returned condition is reversed.  Do not
      	generate new rtx when condition should be reversed; indicate it by
      	setting new argument instead.
      	(add_dependence_list_and_free): Add deps parameter.
      	Update all users.  Do not free dependence list when
      	deps context is readonly.
      	(add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
      	contexts.
      	(remove_from_dependence_list, remove_from_both_dependence_lists): New.
      	(remove_from_deps): New. Use the above functions.	
      	(cur_insn, can_start_lhs_rhs_p): New static variables.
      	(add_or_update_back_dep_1): Initialize present_dep_type.
      	(haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
      	haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
      	haifa_note_dep): New functions implementing dependence hooks for
      	the Haifa scheduler.
      	(note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
      	note_dep): New functions.
      	(ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
      	functions.
      	(init_deps): Initialize last_reg_pending_barrier and deps->readonly.
      	(free_deps): Initialize deps->reg_last.
      	(sched_analyze_reg, sched_analyze_1, sched_analyze_2,
      	sched_analyze_insn): Update to use dependency hooks infrastructure
      	and readonly contexts.
      	(deps_analyze_insn): New function.  Move part of logic from ...
      	(sched_analyze): ... here.  Also move some logic to ...
      	(deps_start_bb): ... here.  New function.
      	(add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
      	sel_sched_p.
      	(sched_deps_init): New function.  Move code from ...
      	(init_dependency_caches): ... here.  Remove.
      	(init_deps_data_vector): New.
      	(sched_deps_finish): New function.  Move code from ...
      	(free_dependency_caches): ... here.  Remove.
      	(init_deps_global, finish_deps_global): Adjust for use with
      	selective scheduling.
      	(get_dep_weak): Move logic to ...
      	(get_dep_weak_1): New function.
      	(ds_merge): Move logic to ...
      	(ds_merge_1): New static function.
      	(ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
      	(ds_get_max_dep_weak): New function.
      	* sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
      	(n_insns): Rename to rgn_n_insns.
      	(debug_ebb_dependencies): New function.
      	(init_ready_list): Use it.
      	(begin_schedule_ready): Use sched_init_only_bb.
      	(ebb_print_insn): Indicate when an insn starts a new cycle.
      	(contributes_to_priority, compute_jump_reg_dependencies,
      	add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
      	(add_block1): Remove to ebb_add_block.
      	(ebb_sched_deps_info, ebb_common_sched_info): New variables.
      	(schedule_ebb): Initialize them.  Use remove_notes instead of
      	rm_other_notes.  Use haifa_local_init/finish.
      	(schedule_ebbs): Use haifa_sched_init/finish.
      	* sched-int.h: Include vecprim.h, remove rtl.h.
      	(struct ready_list): Delete declaration.
      	(sched_verbose_param, enum sched_pass_id_t,
      	bb_vec_t, insn_vec_t, rtx_vec_t): New.
      	(struct sched_scan_info_def): New structure.
      	(sched_scan_info, sched_scan, sched_init_bbs,
      	sched_init_luids, sched_finish_luids, sched_extend_target,
      	haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
      	(struct common_sched_info_def): New.
      	(common_sched_info, haifa_common_sched_info,
      	sched_emulate_haifa_p): Declare.
      	(sel_sched_p): New.
      	(sched_luids): Declare.
      	(INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
      	(sched_max_luid, insn_luid): Declare.
      	(note_list, remove_notes, restore_other_notes, bb_note): Declare.
      	(sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
      	print_insn, print_pattern, print_value, haifa_classify_insn,
      	sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
      	setup_sched_dump, sched_init, sched_finish,
      	sel_insn_is_speculation_check): Export.
      	(struct ready_list): Move from haifa-sched.c.
      	(ready_try, ready, max_issue): Export.
      	(ebb_compute_jump_reg_dependencies, find_fallthru_edge,
      	sched_init_only_bb, sched_split_block, sched_split_block_1,
      	sched_create_empty_bb, sched_create_empty_bb_1,
      	sched_create_recovery_block, sched_create_recovery_edges): Export.
      	(enum reg_pending_barrier_mode): Export.
      	(struct deps): New fields `last_reg_pending_barrier' and `readonly'.
      	(deps_t): New.
      	(struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
      	print_insn field.  Move add_block and fix_recovery_cfg to
      	common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
      	(struct sched_deps_info_def): ... this new structure.
      	(sched_deps_info): Declare.
      	(struct spec_info_def): Remove weakness_cutoff, add
      	data_weakness_cutoff and control_weakness_cutoff.
      	(spec_info): Declare.
      	(struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
      	dep_count field.
      	(struct haifa_insn_data): Rename to struct _haifa_insn_data.
      	(haifa_insn_data_def, haifa_insn_data_t): New typedefs.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
      	(h_d_i_d): New variable.
      	(HDID): New accessor macro.
      	(h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
      	(HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
      	and HDID.
      	(IS_SPECULATION_CHECK_P): Update for selective scheduler.
      	(enum SCHED_FLAGS): Update for selective scheduler.
      	(enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
      	(init_dependency_caches, free_dependency_caches): Delete declarations.
      	(deps_analyze_insn, remove_from_deps, get_dep_weak_1,
      	estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
      	ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
      	sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
      	haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
      	ds_to_dt): Export.
      	(rm_other_notes): Delete declaration.
      	(schedule_block): Remove one argument.
      	(cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
      	ready_element, ready_lastpos, sched_extend_ready_list,
      	sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
      	concat_note_lists): Export.
      	(struct region): Move from sched-rgn.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN): Export.
      	(ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
      	(current_nr_blocks, current_blocks, target_bb): Likewise.
      	(dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
      	sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
      	sched_rgn_local_init, extend_regions,
      	rgn_make_new_region_out_of_new_block, compute_priorities,
      	debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
      	extend_rgns, deps_join rgn_setup_common_sched_info,
      	rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
      	dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
      	(get_rgn_sched_max_insns_priority, sel_add_to_insn_priority, 
      	increase_insn_priority): Likewise.
      	* sched-rgn.c: Include sel-sched.h.
      	(ref_counts): New static variable.  Use it ...
      	(INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
      	(FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
      	(sched_is_disabled_for_current_region_p): Delete static declaration.
      	(struct region): Move to sched-int.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	ebb_head): Define and initialize.
      	(RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
      	BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
      	sched-int.h.
      	(find_single_block_region): Add new argument to indicate that EBB
      	regions should be constructed.
      	(debug_live): Delete declaration.
      	(current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
      	(compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
      	declaration.
      	(init_regions): Delete declaration.
      	(debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
      	rgn_estimate_number_of_insns): New.
      	(too_large): Use estimate_number_of_insns.
      	(haifa_find_rgns): New. Move the code from ...
      	(find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
      	(free_trg_info): New.
      	(compute_trg_info): Allocate candidate tables here instead of ...
      	(init_ready_list): ... here.
      	(rgn_print_insn): Use const_rtx.
      	(contributes_to_priority, extend_regions): Delete static declaration.
      	(add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
      	(add_block1): Rename to rgn_add_block.
      	(debug_rgn_dependencies): Delete static qualifier.
      	(new_ready): Use sched_deps_info.  Simplify.
      	(rgn_common_sched_info, rgn_const_sched_deps_info,
      	rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
      	(region_sched_info): Rename to rgn_const_sched_info.
      	(deps_join): New, extracted from ...
      	(propagate_deps): ... here.
      	(compute_block_dependences, debug_dependencies): Update for selective
      	scheduling.
      	(free_rgn_deps, compute_priorities): New functions.
      	(sched_rgn_init, sched_rgn_finish, rgn_setup_region,
      	sched_rgn_compute_dependencies): New functions.
      	(schedule_region): Use them.
      	(sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
      	rgn_setup_common_sched_info, rgn_setup_sched_infos):
      	New functions.
      	(schedule_insns): Call new functions that were split out.
      	(rgn_make_new_region_out_of_new_block): New.
      	(get_rgn_sched_max_insns_priority): New.
      	(rest_of_handle_sched, rest_of_handle_sched2): Call selective
      	scheduling when appropriate.
      	* sched-vis.c: Include insn-attr.h.
      	(print_value, print_pattern): Make global.
      	(print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
      	* target-def.h (TARGET_SCHED_ADJUST_COST_2,
      	TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
      	TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
      	TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
      	TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
      	hooks.  Initialize them to 0.
      	(TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
      	* target.h (struct gcc_target): Add them.  Rename gen_check field to
      	gen_spec_check.
      	* flags.h (sel_sched_switch_set): Declare.
      	* opts.c (sel_sched_switch_set): New variable.
      	(decode_options): Unset flag_sel_sched_pipelining_outer_loops if
      	pipelining is disabled from command line.
      	(common_handle_option): Record whether selective scheduling is
      	requested from command line.
      	* doc/invoke.texi: Document new flags and parameters.
      	* doc/tm.texi: Document new target hooks.
      	* config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
      	(dfa_state_size): Do not declare locally.
      	* config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
      	* config/rs6000/rs6000.c (rs6000_init_sched_context,
      	rs6000_alloc_sched_context, rs6000_set_sched_context,
      	rs6000_free_sched_context): New functions.
      	(struct _rs6000_sched_context): New.
      	(rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
      	scheduling.
      	(rs6000_sched_finish): Do not run for selective scheduling. 
      
      Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
      Co-Authored-By: Dmitry Melnik <dm@ispras.ru>
      Co-Authored-By: Dmitry Zhurikhin <zhur@ispras.ru>
      Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>
      
      From-SVN: r139854
      Andrey Belevantsev committed
    • Implement late-specified return type using 'auto'. · f57ca1ea
              * cp-tree.h (struct cp_declarator): Add late_return_type field to
              function declarator.
              * parser.c (cp_parser_late_return_type_opt): New fn.
              (cp_parser_direct_declarator): Use it.
              (make_call_declarator): Put it in the declarator.
              * decl.c (grokdeclarator): Splice in late-specified return type.
              * pt.c (splice_late_return_type): New fn.
      
      From-SVN: r139848
      Jason Merrill committed