1. 26 Jan, 2016 1 commit
    • new scop schedule for isl-0.15 · adba512d
      Keep unchanged the implementation for isl-0.14.
      
      	* graphite-poly.c (apply_poly_transforms): Simplify.
      	(print_isl_set): Use more readable format: ISL_YAML_STYLE_BLOCK.
      	(print_isl_map): Same.
      	(print_isl_union_map): Same.
      	(print_isl_schedule): New.
      	(debug_isl_schedule): New.
      	* graphite-dependences.c (scop_get_reads): Do not call
      	isl_union_map_add_map that is undocumented isl functionality.
      	(scop_get_must_writes): Same.
      	(scop_get_may_writes): Same.
      	(scop_get_original_schedule): Remove.
      	(scop_get_dependences): Do not call isl_union_map_compute_flow that
      	is deprecated in isl 0.15.  Instead, use isl_union_access_* interface.
      	(compute_deps): Remove.
      	* graphite-isl-ast-to-gimple.c (print_schedule_ast): New.
      	(debug_schedule_ast): New.
      	(translate_isl_ast_to_gimple::scop_to_isl_ast): Call set_separate_option.
      	(graphite_regenerate_ast_isl): Add dump.
      	(translate_isl_ast_to_gimple::scop_to_isl_ast): Generate code
      	from scop->transformed_schedule.
      	(graphite_regenerate_ast_isl): Add more dump.
      	* graphite-optimize-isl.c (optimize_isl): Set
      	scop->transformed_schedule.  Check whether schedules are equal.
      	(apply_poly_transforms): Move here.
      	* graphite-poly.c (apply_poly_transforms): ... from here.
      	(free_poly_bb): Static.
      	(free_scop): Static.
      	(pbb_number_of_iterations_at_time): Remove.
      	(print_isl_ast): New.
      	(debug_isl_ast): New.
      	(debug_scop_pbb): New.
      	* graphite-scop-detection.c (print_edge): Move.
      	(print_sese): Move.
      	* graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons): Remove.
      	(build_scop_scattering): Remove.
      	(create_pw_aff_from_tree): Assert instead of bailing out.
      	(add_condition_to_pbb): Remove unused code, do not fail.
      	(add_conditions_to_domain): Same.
      	(add_conditions_to_constraints): Remove.
      	(build_scop_context): New.
      	(add_iter_domain_dimension): New.
      	(build_iteration_domains): Initialize pbb->iterators.
      	Call add_conditions_to_domain.
      	(nested_in): New.
      	(loop_at): New.
      	(index_outermost_in_loop): New.
      	(index_pbb_in_loop): New.
      	(outermost_pbb_in): New.
      	(add_in_sequence): New.
      	(add_outer_projection): New.
      	(outer_projection_mupa): New.
      	(add_loop_schedule): New.
      	(build_schedule_pbb): New.
      	(build_schedule_loop): New.
      	(embed_in_surrounding_loops): New.
      	(build_schedule_loop_nest): New.
      	(build_original_schedule): New.
      	(build_poly_scop): Call build_original_schedule.
      	* graphite.h: Declare print_isl_schedule and debug_isl_schedule.
      	(free_poly_dr): Remove.
      	(struct poly_bb): Add iterators.  Remove schedule, transformed, saved.
      	(free_poly_bb): Remove.
      	(debug_loop_vec): Remove.
      	(print_isl_ast): Declare.
      	(debug_isl_ast): Declare.
      	(scop_do_interchange): Remove.
      	(scop_do_strip_mine): Remove.
      	(scop_do_block): Remove.
      	(flatten_all_loops): Remove.
      	(optimize_isl): Remove.
      	(pbb_number_of_iterations_at_time): Remove.
      	(debug_scop_pbb): Declare.
      	(print_schedule_ast): Declare.
      	(debug_schedule_ast): Declare.
      	(struct scop): Remove schedule.  Add original_schedule,
      	transformed_schedule.
      	(free_gimple_poly_bb): Remove.
      	(print_generated_program): Remove.
      	(debug_generated_program): Remove.
      	(unify_scattering_dimensions): Remove.
      	* sese.c (print_edge): ... here.
      	(print_sese): ... here.
      	(debug_edge): ... here.
      	(debug_sese): ... here.
      	* sese.h (print_edge): Declare.
      	(print_sese): Declare.
      	(dump_edge): Declare.
      	(dump_sese): Declare.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r232812
      Aditya Kumar committed
  2. 21 Jan, 2016 2 commits
    • fix pr68692: reinstantiate the copy of internal parameters · 1d198f09
      Adding a testcase and reverting this patch:
      [PATCH] remove parameter_rename_map
      
      This map was used in the transition to the new scop detection: with the new scop
      detection, we do not need this map anymore.
      
             * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
             Remove use of parameter_rename_map.
             (copy_def): Remove.
             (copy_internal_parameters): Remove.
             (graphite_regenerate_ast_isl): Remove call to copy_internal_parameters.
             * sese.c (new_sese_info): Do not initialize parameter_rename_map.
             (free_sese_info): Do not free parameter_rename_map.
             (set_rename): Do not use parameter_rename_map.
             (rename_uses): Update call to set_rename.
             (graphite_copy_stmts_from_block): Do not use parameter_rename_map.
             * sese.h (parameter_rename_map_t): Remove.
             (struct sese_info_t): Remove field parameter_rename_map.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r232659
      Aditya Kumar committed
    • record loops in execution order · 5431c9ea
      	* graphite-scop-detection.c (record_loop_in_sese): New.
      	(gather_bbs::before_dom_children): Call record_loop_in_sese.
      	(build_scops): Remove call to build_sese_loop_nests.
      	* sese.c (sese_record_loop): Remove.
      	(build_sese_loop_nests): Remove.
      	(new_sese_info): Remove region->loops.
      	(free_sese_info): Same.
      	* sese.h (sese_contains_loop): Same.
      	(build_sese_loop_nests): Remove.
      	(sese_contains_loop): Remove.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r232654
      Aditya Kumar committed
  3. 04 Jan, 2016 1 commit
  4. 24 Dec, 2015 1 commit
    • Use const-ref instead of values for sese_l passed to functions. · 1cb28772
      gcc/ChangeLog:
      
      2015-12-24  hiraditya  <hiraditya@msn.com>
      
              * graphite-sese-to-poly.c (build_loop_iteration_domains): Use ref instead of value.
              * sese.c (invariant_in_sese_p_rec): Use const ref instead of value.
              (scalar_evolution_in_region): Same
              * sese.h (bb_in_region): Same
              (bb_in_sese_p): Same.
              (stmt_in_sese_p): Same.
              (defined_in_sese_p): Same.
              (loop_in_sese_p): Same.
      
      From-SVN: r231947
      Aditya Kumar committed
  5. 19 Nov, 2015 1 commit
  6. 18 Nov, 2015 1 commit
    • Move codegen related functions to graphite-isl-ast-to-gimple.c · 2ecf4eca
      No functional changes intended.
      This patch passes regtest and bootstrap on linux-x86-64 with
      BOOT_CFLAGS='-O2 -fgraphite-identity -floop-nest-optimize'
      
      gcc/ChangeLog:
      
      2015-11-14  hiraditya  <hiraditya@msn.com>
      
      	* graphite-isl-ast-to-gimple.c (struct ast_build_info): Remove semicolon.
      	(class translate_isl_ast_to_gimple): Indentation.
              (translate_pending_phi_nodes): Comment.
              (add_parameters_to_ivs_params): Moved from sese.c inside class translate_isl_ast_to_gimple.
              (get_max_schedule_dimensions): Same.
              (generate_isl_context): Same.
              (extend_schedule): Same.
              (generate_isl_schedule): Same.
              (set_options): Same.
              (scop_to_isl_ast): Same.
              (is_valid_rename): Same.
              (get_rename): Same.
              (get_rename_from_scev): Same.
              (get_def_bb_for_const): Same.
              (get_new_name): Same.
              (collect_all_ssa_names): Same.
              (copy_loop_phi_args): Same.
              (copy_loop_phi_nodes): Same.
              (copy_loop_close_phi_args): Same.
              (copy_loop_close_phi_nodes): Same.
              (copy_cond_phi_args): Same.
              (copy_cond_phi_nodes): Same.
              (graphite_copy_stmts_from_block): Same.
              (copy_bb_and_scalar_dependences): Same.
              (add_phi_arg_for_new_expr): Same.
              (rename_uses): Same.
              (set_rename): Same.
              (set_rename_for_each_def): Same.
              (gsi_insert_earliest): Same.
              (rename_all_uses): Same.
              (codegen_error_p): Same.
              (print_isl_ast_node): Same.
      	(translate_isl_ast_for_loop): Call function codegen_error_p.
      	(translate_isl_ast_to_gimple::translate_isl_ast): Same.
              (translate_isl_ast_node_user): Make nb_loops const and release iv_map before exit.
      	(get_true_edge_from_guard_bb): Move all free-functions early.
      	(get_false_edge_from_guard_bb): Same.
      	(bb_contains_loop_close_phi_nodes): Same.
      	(bb_contains_loop_phi_nodes): Same.
      	(is_loop_closed_ssa_use):  Same.
      	(number_of_phi_nodes): Same.
      	(phi_uses_name): Same.
      	(later_of_the_two): Same.
      	(substitute_ssa_name):
      	(get_edges): Same.
      	(get_loc): Same.
      	(get_loop_init_value): Same.
      	(find_init_value): Same.
      	(find_init_value_close_phi): Same.
      	(ast_build_before_for): Same.
      	(graphite_regenerate_ast_isl): Formatting changes.
      	* graphite-scop-detection.c (build_cross_bb_scalars_use): Same.
      	* sese.c (get_rename): Move to graphite-isl-ast-to-gimple.c
      	(set_rename): Same.
      	(gsi_insert_earliest): Same.
      	(collect_all_ssa_names): Same.
      	(rename_all_uses): Same.
      	(rename_uses): Same.
      	(get_def_bb_for_const): Same.
      	(copy_loop_phi_nodes): Same.
      	(copy_loop_close_phi_args): Same.
      	(copy_loop_close_phi_nodes): Same.
      	(copy_cond_phi_args): Same.
      	(copy_cond_phi_nodes): Same.
      	(set_rename_for_each_def): Same.
      	(graphite_copy_stmts_from_block): Same.
      	(copy_bb_and_scalar_dependences): Same.
      	(if_region_set_false_region): Same.
      	(scev_analyzable_p): Same.
      	* sese.h: Delete extern functions moved to graphite-isl-ast-to-gimple.c
      
      From-SVN: r230566
      Aditya Kumar committed
  7. 12 Nov, 2015 1 commit
    • Preserve the original program while using graphite. · 65b016eb
      Earlier, graphite used to translate portions of the original program after
      scop-detection in order to represent the SCoP into polyhedral model.  This was
      required because each basic block was represented as independent basic block in
      the polyhedral model. So all the cross-basic-block dependencies were translated
      out-of-ssa.
      
      With this patch those dependencies are also exposed to the ISL, so there is no
      need to modify the original structure of the program.
      
      After this patch we should be able to enable graphite at some default
      optimization level.
      
      Highlights:
      Remove cross bb scalar to array translation
      For reductions, add support for more than just INT_CST
      Early bailout on codegen.
      Verify loop-closed ssa structure during copy of renames
      The uses of exprs should come from bb which dominates the bb
      Collect the init value of close phi in loop-guard
      Do not follow vuses for close-phi, postpone loop-close phi until the
          corresponding loop-phi is processed
      Bail out if no bb found to place cond/loop -phis
      Move insertion of liveouts at the end of codegen
      Insert loop-phis in the loop-header.
      
      This patch passes regtest and bootstrap with BOOT_CFLAGS='-O2 -fgraphite-identity -floop-nest-optimize'
      
      2015-11-11  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
      
      	* graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple):
      	  New member codegen_error
      	(translate_isl_ast_for_loop): Remove call to single_succ_edge and early return.
      	(translate_isl_ast_node_user): Early return in case of error.
      	(translate_isl_ast_to_gimple::translate_isl_ast): Same.
      	(translate_isl_ast_to_gimple::translate_pending_phi_nodes): New.
      	(add_parameters_to_ivs_params): Remove macro.
      	(graphite_regenerate_ast_isl): Add if_region pointer to region.
      	* graphite-poly.c (new_poly_dr): Remove macro.
      	(print_pdr): Same.
      	(new_gimple_poly_bb): Same.
      	(free_gimple_poly_bb): Same.
      	(print_scop_params): Same.
      	* graphite-poly.h (struct poly_dr): Same.
      	(struct poly_bb): Add new_bb.
      	(gbb_from_bb): Remove dead code.
      	(pbb_from_bb): Same.
      	* graphite-scop-detection.c (parameter_index_in_region_1): Same.
      	(parameter_index_in_region): Same.
      	(find_scop_parameters): Same.
      	(build_cross_bb_scalars_def): New.
      	(build_cross_bb_scalars_use): New.
      	(graphite_find_cross_bb_scalar_vars): New
      	(try_generate_gimple_bb): Reads and Writes.
      	(build_alias_set): Move.
      	(gather_bbs::before_dom_children): Gather bbs visited.
      	(build_scops): call build_alias_set.
      	* graphite-sese-to-poly.c (phi_arg_in_outermost_loop): Delete.
      	(remove_simple_copy_phi): Delete.
      	(remove_invariant_phi): Delete.
      	(simple_copy_phi_p): Delete.
      	(reduction_phi_p): Delete.
      	(isl_id_for_dr): Remove unused param.
      	(parameter_index_in_region_1): Remove macro usage.
      	(set_scop_parameter_dim): Same.
      	(add_param_constraints): Same.
      	(add_conditions_to_constraints): Same
      	(build_scop_iteration_domain): Same.
      	(pdr_add_alias_set): Comment.
      	(add_scalar_version_numbers): New.
      	(build_poly_dr): ISL id.
      	(build_scop_drs): Move.
      	(build_poly_sr_1): Same.
      	(insert_stmts): Remove.
      	(build_poly_sr): New.
      	(new_pbb_from_pbb): Delete.
      	(insert_out_of_ssa_copy_on_edge): Delete.
      	(create_zero_dim_array): Delete.
      	(scalar_close_phi_node_p): Delete.
      	(propagate_expr_outside_region): Delete.
      	(rewrite_close_phi_out_of_ssa): Delete.
      	(rewrite_phi_out_of_ssa): Delete.
      	(rewrite_degenerate_phi): Delete.
      	(rewrite_reductions_out_of_ssa): Delete.
      	(rewrite_cross_bb_scalar_dependence): Delete.
      	(handle_scalar_deps_crossing_scop_limits):
      	(rewrite_cross_bb_scalar_deps): Delete.
      	(build_poly_scop): Remove calls to out-of-ssa functions.
      	* graphite.c (graphite_transform_loops): Early return in case of codegen error.
      	* sese.c (debug_rename_map_1): Delete.
      	(debug_rename_map): Delete.
      	(sese_record_loop): Remove macro.
      	(build_sese_loop_nests): Same.
      	(new_sese_info): Same.
      	(free_sese_info): Same.
      	(sese_insert_phis_for_liveouts):
      	(is_loop_closed_ssa_use): New.
      	(number_of_phi_nodes): New.
      	(bb_contains_loop_close_phi_nodes): New.
      	(bb_contains_loop_phi_nodes): New.
      	(phi_uses_name): New.
      	(is_valid_rename):
      	(get_rename): Add old_bb and loop_phi for more precise matching of
      	exprs.
      	(set_rename): Pass region.
      	(later_of_the_two): New.
      	(gsi_insert_earliest): New.
      	(collect_all_ssa_names): New.
      	(substitute_ssa_name): New.
      	(rename_all_uses): New.
      	(get_rename_from_scev): New.
      	(rename_uses): Pass old_bb for more precise matching of exprs.
      	(get_def_bb_for_const): New.
      	(get_new_name): New.
      	(get_loc): New.
      	(get_edges): New.
      	(copy_loop_phi_args): New.
      	(copy_loop_phi_nodes): New.
      	(get_loop_init_value): New.
      	(find_init_value): New.
      	(find_init_value_close_phi): New.
      	(copy_loop_close_phi_args): New.
      	(copy_loop_close_phi_nodes): New.
      	(add_phi_arg_for_new_expr): New.
      	(copy_cond_phi_args): New.
      	(copy_cond_phi_nodes): New.
      	(copy_phi_nodes): New.
      	(should_copy_to_new_region): New.
      	(set_rename_for_each_def): New.
      	(graphite_copy_stmts_from_block): Early return in case of error.
      	(copy_bb_and_scalar_dependences): Same.
      	* sese.h (vec_find): New.
      	(SESE_PARAMS): Delete.
      	(SESE_LOOPS): Delete.
      	(SESE_LOOP_NEST): Delete.
      	(sese_contains_loop): Remove macro usage.
      	(sese_nb_params): Same.
      	(struct gimple_poly_bb): Added read_scalar_refs, write_scalar_refs.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r230200
      Aditya Kumar committed
  8. 04 Nov, 2015 2 commits
    • remove parameter_rename_map · 24bc7503
      This map was used in the transition to the new scop detection: with the new scop
      detection, we do not need this map anymore.
      
             * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
             Remove use of parameter_rename_map.
             (copy_def): Remove.
             (copy_internal_parameters): Remove.
             (graphite_regenerate_ast_isl): Remove call to copy_internal_parameters.
             * sese.c (new_sese_info): Do not initialize parameter_rename_map.
             (free_sese_info): Do not free parameter_rename_map.
             (set_rename): Do not use parameter_rename_map.
             (rename_uses): Update call to set_rename.
             (graphite_copy_stmts_from_block): Do not use parameter_rename_map.
             * sese.h (parameter_rename_map_t): Remove.
             (struct sese_info_t): Remove field parameter_rename_map.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r229783
      Aditya Kumar committed
    • ENABLE_CHECKING refactoring: remove remaining occurrences · a6c764d0
      libcpp/
      
      	* config.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Remove ENABLE_CHECKING.
      
      gcc/
      
      	* cfganal.c (inverted_post_order_compute): Remove conditional
      	compilation, use flag_checking.
      	* config.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Remove ENABLE_CHECKING.
      	* genconditions.c: Do not #undef ENABLE_CHECKING.
      	* sese.h (bb_in_region): Comment out broken check.
      	* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa_1): Remove
      	conditional compilation, use flag_checking.
      
      From-SVN: r229758
      Mikhail Maltsev committed
  9. 21 Oct, 2015 3 commits
    • a scalar depending on vdefs in the current region is not invariant · 78fd2726
      When a scalar is defined in function of an array reference in the current scop,
      it does variate.  Graphite cannot represent the condition in scop-11.c, as a[*]
      variates in the current region, and it is not an affine condition:
      
        for (j = 0; j <= 20; j++)
          a[j] = b + i;
      
        if (a[12] == 23)
          b = 3;
        else
          b = 1;
      
        for (j = 0; j <= 20; j++)
          a[j] = b + i;
      
      	* graphite-scop-detection.c (parameter_index_in_region): Update call to
      	invariant_in_sese_p_rec.
      	* graphite-sese-to-poly.c (extract_affine): Same.
      	* sese.c (invariant_in_sese_p_rec): Pass in an extra parameter has_vdefs.
      	(scalar_evolution_in_region): Return chrec_dont_know when the scalar variable
      	depends on virtual definitions in the current region.
      	* sese.h (invariant_in_sese_p_rec): Update declaration.
      
      testsuite/
      	* gcc.dg/graphite/scop-11.c: Update pattern.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r229151
      Aditya Kumar committed
    • Refactor graphite-sese-to-poly, sese.h, graphite-poly.h · caf5b4df
      Now that scop contains a list of all the basic blocks inside, it makes sense to
      iterate over only those basic blocks in
      graphite-sese-to-poly.c:rewrite_reductions_out_of_ssa,rewrite_cross_bb_scalar_deps_out_of_ssa
      
      Passes regtest and bootstrap.
      
      gcc/ChangeLog:
      
      2015-10-20  Aditya Kumar  <hiraditya@msn.com>
      
              * graphite-poly.h (struct dr_info): Added invalid_alias_set number.
              (operator=): Removed.
              (dr_info): Make alias_set number the last argument with default value of invalid_alias_set.
              * graphite-sese-to-poly.c (build_scop_drs): Update constructor of dr_info.
              (rewrite_reductions_out_of_ssa): Iterate only through the basic blocks which are inside region.
              (rewrite_cross_bb_scalar_deps_out_of_ssa): Same.
              * sese.h (struct sese_l): Removed assignment operator.
              (split_region_for_bb): Removed dead code.
      
      From-SVN: r229136
      Aditya Kumar committed
    • Refactoring sese.h and graphite-poly.h · d37fc3aa
      Rename scop->region to scop->scop_info
      Removed conversion constructors for sese_l and dr_info.
      Removed macros.
      
      No functional changed intended. Passes regtest and bootstrap.
      
      gcc/ChangeLog:
      
      2015-19-10  Aditya Kumar  <aditya.k7@samsung.com>
              * graphite-poly.h (struct dr_info): Removed conversion constructor.
              (struct scop): Renamed scop::region to scop::scop_info
              (scop_set_region): Same.
              (SCOP_REGION): Removed
              (SCOP_CONTEXT): Removed.
              (POLY_SCOP_P): Removed.
              * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user):
              Rename scop->region to scop->scop_info.
              (add_parameters_to_ivs_params): Same.
              (graphite_regenerate_ast_isl): Same.
              * graphite-poly.c (new_scop): Same.
              (free_scop): Same.
              (print_scop_params): Same.
              * graphite-scop-detection.c (scop_detection::remove_subscops): Same.
              (scop_detection::remove_intersecting_scops): Use pointer to sese_l.
              (dot_all_scops_1): Rename scop->region to scop->scop_info.
              (scop_detection::nb_pbbs_in_loops): Same.
              (find_scop_parameters): Same.
              (try_generate_gimple_bb): Same.
              (gather_bbs::before_dom_children): Same.
              (gather_bbs::after_dom_children): Same.
              (build_scops): Same.
              * graphite-sese-to-poly.c (build_scop_scattering): Same.
              (extract_affine_chrec): Same.
              (extract_affine): Same.
              (set_scop_parameter_dim): Same.
              (build_loop_iteration_domains): Same.
              (create_pw_aff_from_tree): Same.
              (add_param_constraints): Same.
              (build_scop_iteration_domain): Same.
              (build_scop_drs): Same.
              (analyze_drs_in_stmts): Same.
              (insert_out_of_ssa_copy_on_edge): Same.
              (rewrite_close_phi_out_of_ssa):Same.
              (rewrite_reductions_out_of_ssa):Same.
              (handle_scalar_deps_crossing_scop_limits):Same.
              (rewrite_cross_bb_scalar_deps):Same.
              (rewrite_cross_bb_scalar_deps_out_of_ssa):Same.
              (build_poly_scop):Same.
              (build_alias_set): Use pointer to dr_info.
              * graphite.c (print_graphite_scop_statistics):
              (graphite_transform_loops):
              * sese.h (struct sese_l): Remove conversion constructor.
      
      From-SVN: r229135
      Aditya Kumar committed
  10. 07 Oct, 2015 3 commits
    • gather bbs and conditions in a single walk through dominators · b0b5710c
      Clean up the function to build scop's basic blocks and the function
      that gathers the conditions under which a basic block is executed.  We remove
      one traversal of the dominator tree.
      
      This refactoring was triggered by the need of a vec<bb> of all the basic blocks
      in a region.  We will use that vector in a patch that removes the out-of-ssa
      translation of scalar dependences: we will iterate through the basic blocks of a
      region to record scalar dependences crossing bbs or going out of the region.
      
      The patch passes bootstrap and regtest on x86_64-linux.
      
      2015-10-06  Aditya Kumar  <aditya.k7@samsung.com>
                      Sebastian Pop  <s.pop@samsung.com>
      
                      * graphite-dependences.c (scop_get_dependences): Do not use SCOP_BBS.
                      * graphite-isl-ast-to-gimple.c (get_max_schedule_dimensions): Same.
                      (generate_isl_schedule): Same.
                      * graphite-optimize-isl.c (scop_get_domains): Same.
                      (apply_schedule_map_to_scop): Same.
                      * graphite-poly.c (print_iteration_domains): Same.
                      (remove_gbbs_in_scop): Same.
                      (new_scop): Same.
                      (free_scop): Same.
                      (print_scop): Same.
                      * graphite-poly.h (struct scop): Rename bbs to pbbs.
                      (SCOP_BBS): Remove.
                      * graphite-scop-detection.c (compare_bb_depths): Remove.
                      (graphite_sort_dominated_info): Remove.
                      (try_generate_gimple_bb): Move out of scop_detection.
                      (all_non_dominated_preds_marked_p): Remove.
                      (build_scop_bbs_1): Remove.
                      (build_scop_bbs): Remove.
                      (nb_pbbs_in_loops): Do not use SCOP_BBS.
                      (find_scop_parameters): Same.
                      (sese_dom_walker): Rename gather_bbs.
                      (before_dom_children): Call try_generate_gimple_bb and collect gbb
                      and pbb.
                      (build_scops): Call gather_bbs.
                      * graphite-sese-to-poly.c (build_scop_scattering): Do not use SCOP_BBS.
                      (add_conditions_to_constraints): Same.
                      (build_scop_iteration_domain): Same.
                      (build_scop_drs): Same.
                      (new_pbb_from_pbb): Same.
                      * sese.c (new_sese_info): Create bbs.
                      * sese.h (struct sese_info_t): Add bbs.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r228581
      Aditya Kumar committed
    • remove unused code · 91bf00a9
      2015-10-07  Aditya Kumar  <aditya.k7@samsung.com>
                      Sebastian Pop  <s.pop@samsung.com>
      
                      * graphite-scop-detection.c (parameter_index_in_region): Remove
                      use of SESE_ADD_PARAMS.
                      (find_scop_parameters): Same.
                      * sese.c (new_sese_info): Same.
                      * sese.h (struct sese_info_t): Remove add_params.
                      (SESE_ADD_PARAMS): Remove.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r228574
      Aditya Kumar committed
    • move graphite bookkeeping from sese to sese_info · bafcb153
      2015-10-06  Aditya Kumar  <aditya.k7@samsung.com>
                      Sebastian Pop  <s.pop@samsung.com>
      
                      * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple): Use
                      an sese_info_p.
                      (copy_def): Same.
                      (copy_internal_parameters): Same.
                      (translate_isl_ast_to_gimple): Use an sese_l.
                      (build_iv_mapping): Same.
                      * graphite-poly.c (new_sese): Rename new_sese_info.
                      (free_sese): Rename free_sese_info.
                      * graphite-poly.h (struct scop): Use an sese_info_p.
                      (scop_set_region): Same.
                      * graphite-scop-detection.c (struct sese_l): Moved...
                      (get_entry_bb): Moved...
                      (get_exit_bb): Moved...
                      (parameter_index_in_region_1): Use an sese_info_p.
                      (parameter_index_in_region): Same.
                      (scan_tree_for_params): Same.
                      (find_params_in_bb): Same.
                      (sese_dom_walker): Use an sese_l.
                      * graphite-sese-to-poly.c (remove_invariant_phi): Same.
                      (reduction_phi_p): Same.
                      (parameter_index_in_region_1): Use an sese_info_p.
                      (propagate_expr_outside_region): Use an sese_l.
                      * graphite.c: Replace uses of SCOP_REGION.
                      * sese.c (sese_record_loop): Use an sese_info_p.
                      (build_sese_loop_nests): Same.
                      (sese_build_liveouts_use): Same.
                      (sese_build_liveouts_bb): Same.
                      (sese_build_liveouts_bb): Same.
                      (sese_bad_liveouts_use): Same.
                      (sese_reset_debug_liveouts_bb): Same.
                      (sese_build_liveouts): Same.
                      (new_sese): Renamed new_sese_info.
                      (free_sese): Renamed free_sese_info.
                      (set_rename): Use an sese_info_p.
                      (graphite_copy_stmts_from_block): Same.
                      (copy_bb_and_scalar_dependences): Same.
                      (outermost_loop_in_sese_1): Use an sese_l.
                      (outermost_loop_in_sese): Same.
                      (if_region_set_false_region): Use an sese_info_p.
                      (move_sese_in_condition): Same.
                      (scalar_evolution_in_region): Use an sese_l.
                      * sese.h (struct sese_l): ... here.
                      (SESE_ENTRY): Remove.
                      (SESE_ENTRY_BB): Remove.
                      (SESE_EXIT): Remove.
                      (SESE_EXIT_BB): Remove.
                      (sese_contains_loop): Use an sese_info_p.
                      (sese_nb_params): Same.
                      (bb_in_sese_p): Use an sese_l.
                      (stmt_in_sese_p): Same.
                      (defined_in_sese_p): Same.
                      (loop_in_sese_p): Same.
                      (sese_loop_depth): Same.
                      (struct ifsese_s): Use an sese_info_p.
                      (gbb_loop_at_index): Use an sese_l.
                      (nb_common_loops): Same.
                      (scev_analyzable_p): Same.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r228572
      Aditya Kumar committed
  11. 01 Oct, 2015 1 commit
    • Rename gimple_bb to gimple_poly_bb · 65ef70d6
      Renaming gimple_bb to gimple_poly_bb because there is a function gimple_bb
      by the same name in gimple.h. No functional change intended.
      Passes regtest and bootstrap.
      
      gcc/ChangeLog:
      
      2015-10-01  Aditya Kumar  <hiraditya@msn.com>
      
              * graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple):
      	Renamed type from gimple_bb_p to gimple_poly_bb_p.
              (translate_isl_ast_node_user): Same.
              * graphite-poly.c (new_poly_bb): Same.
              * graphite-poly.h (gbb_from_bb): Same.
              * sese.h: Same.
              * graphite-sese-to-poly.c (new_gimple_bb): gimple_bb_p -> gimple_poly_bb_p
              (build_scop_scattering): Same.
              (find_params_in_bb): Same.
              (add_conditions_to_domain): Same.
              (sese_dom_walker::before_dom_children): Same.
              (analyze_drs_in_stmts): Same.
              (new_pbb_from_pbb): Same.
              (free_data_refs_aux): New pointer to type base_alias_pair.
              * graphite-sese-to-poly.h: Same.
              * sese.c (if_region_set_false_region): Fixed Indentation.
              (move_sese_in_condition): Same.
      
      From-SVN: r228358
      Aditya Kumar committed
  12. 28 Sep, 2015 2 commits
    • Redesign Graphite scop detection · 7009b073
      Redesign Graphite scop detection for faster compiler time and detecting more SCoPs.
      
      Existing algorithm for SCoP detection in graphite was based on dominator tree
      where a tree (CFG) traversal was required for analyzing an SESE. The tree
      traversal is linear in the number of basic blocks and SCoP detection is
      (probably) linear in number of instructions. That algorithm utilized a generic
      infrastructure of SESE which does not directly represent loops.  With regards to
      graphite framework, we are only interested in subtrees with loops. The new
      algorithm is geared towards tree traversal on loop structure. The algorithm is
      linear in number of loops which is faster than the previous algorithm.
      
      Briefly, we start the traversal at a loop-nest and analyze it recursively for
      validity. Once a valid loop is found we find a valid adjacent loop. If an
      adjacent loop is found and is valid, we merge both loop nests otherwise we form
      a SCoP from the previous loop nest, and resume the algorithm from the adjacent
      loop nest. The data structure to represent an SESE is an ordered pair of edges
      (entry, exit). The new algoritm can extend a SCoP in both the directions. With
      this approach, the number of instructions to be analyzed for validity reduces to
      a minimal set.  We start by analyzing those statements which are inside a loop,
      because validity of those statements is necessary for the validity of loop. The
      statements outside the loop nest can be just excluded from the SESE if they are
      not valid.
      
      This patch depends on: https://gcc.gnu.org/ml/gcc-patches/2015-09/msg02024.html
      
      Passes (c,c++,fortran) regtest and bootstrap.
      
      gcc/ChangeLog:
      
      2015-09-27  Aditya Kumar  <hiraditya@msn.com>
                  Sebastian Pop  <s.pop@samsung.com>
              * graphite-optimize-isl.c (optimize_isl):
              * graphite-scop-detection.c (struct sese_l): New type.
              (get_entry_bb): API for getting entry bb of SESE.
              (get_exit_bb): API for getting exit bb of SESE.
              (class debug_printer): New type. Simple printer in debug mode.
              (trivially_empty_bb_p): New. Return true when BB is empty or
      	contains only debug instructions.
              (graphite_can_represent_expr): Call scalar_evoution_in_region
      	instead of analyze_scalar_evolution. Pass in scop instead of only
      	the scop entry.
              (stmt_has_simple_data_refs_p): Pass in scop instead of only the
      	scop entry.
              (stmt_simple_for_scop_p): Same.
              (harmful_stmt_in_bb): Same.
              (graphite_can_represent_loop): Deleted.
              (struct scopdet_info): Deleted.
              (scopdet_basic_block_info): Deleted.
              (build_scops_1): Deleted.
              (bb_in_sd_region): Deleted.
              (find_single_entry_edge): Deleted.
              (find_single_exit_edge): Deleted.
              (create_single_entry_edge): Deleted.
              (sd_region_without_exit): Deleted.
              (create_single_exit_edge): Deleted.
              (unmark_exit_edges): Deleted.
              (mark_exit_edges): Deleted.
              (create_sese_edges): Deleted.
              (build_graphite_scops): Deleted.
              (canonicalize_loop_closed_ssa): Recompute all dominators at the
      	end.
              (build_scops): Use the new scop_builder to build scops.
              (dot_all_scops_1): Use the new pretty printer. Print loop father
      	as well.
              (loop_body_is_valid_scop): New. Return true if loop body is a
      	valid scop.
              (class scop_builder): New. Builds SCoPs for polyhedral
      	optimizatios.
              (scop_builder): New. Constructor.
              (static sese_l invalid_sese): sese_l with invalid edges.
              (get_sese): Get an sese (from a loop) if possible, invalid_sese
      	otherwise.
              (get_nearest_dom_with_single_entry): Get nearest dominator of a
      	basic_block with single entry. Return NULL if we get to the
      	beginning of a function.
              (get_nearest_pdom_with_single_exit): Get nearest post-dominator of
      	a basic_block with single exit. Return NULL if we get to the
      	beginning of a function.
              (print_sese): Pretty-print SESE.
              (merge_sese): Merge two SESEs if possible and return the new SESE.
              (build_scop_depth): Start building the SCoP within a loop nest.
              (build_scop_breadth): Start building the SCoP at a single loop
      	depth. Merge adjacent SESEs if valid.
              (can_represent_loop_1): Returns true if Graphite can represent
      	loop inside SCoP. Helper for can_represent_loop.
              (can_represent_loop): Returns true if Graphite can represent LOOP
      	and all its nested loops in SCoP.
              (loop_is_valid_scop): Returns true if LOOP and all its nests
      	constitute a valid SCoP.
              (region_has_one_loop): Returns true of a region has only one loop.
              (add_scop): Add SCoP to the list of valid scops. Removes an
      	already existing scop if it intersects with or subsumed by this
      	one.
              (harmful_stmt_in_region): Returns true if SCoP has any statment
      	which cannot be represented by Graphite.
              (subsumes): Returns true of SCoP S1 subsumes SCoP S2.
              (remove_subscops): Remove any SCoP from the list of already found
      	SCoPs, if subsumed by S1.
              (intersects): Return true if region bounded by SCoPs S1 and S2
      	intersect.
              (remove_intersecting_scops): Remove any SCoP which intersects with
      	S1.
              * graphite.c (print_graphite_scop_statistics):
              (print_graphite_statistics): Print SCoP info while debugging.
              (graphite_initialize): Early exit in case number of loops in a
      	function is less than PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION or
      	basic blocks are more than PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION.
              (graphite_finalize):
              * params.def: Add PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION.
              * sese.h (sese_loop_depth): Remove unnecessary gcc_assert.
              (recompute_all_dominators): Recalculate POST_DOMINATORS.
              * tree-cfg.c (print_loops): Print the function name while printing
      	loops.
      
      gcc/testsuite/ChangeLog:
      
      2015-09-27  Aditya Kumar  <hiraditya@msn.com>
                  Sebastian Pop  <s.pop@samsung.com>
              * gcc.dg/graphite/block-1.c: Modified to match the pattern.
              * gcc.dg/graphite/block-3.c: Same.
              * gcc.dg/graphite/block-4.c: Same.
              * gcc.dg/graphite/block-5.c: Same.
              * gcc.dg/graphite/block-6.c: Same.
              * gcc.dg/graphite/block-7.c: Same.
              * gcc.dg/graphite/block-8.c: Same.
              * gcc.dg/graphite/block-pr47654.c: Same.
              * gcc.dg/graphite/interchange-0.c: Same.
              * gcc.dg/graphite/interchange-1.c: Same.
              * gcc.dg/graphite/interchange-10.c: Same.
              * gcc.dg/graphite/interchange-11.c: Same.
              * gcc.dg/graphite/interchange-12.c: Same.
              * gcc.dg/graphite/interchange-13.c: Same.
              * gcc.dg/graphite/interchange-14.c: Same.
              * gcc.dg/graphite/interchange-15.c: Same.
              * gcc.dg/graphite/interchange-3.c: Same.
              * gcc.dg/graphite/interchange-4.c: Same.
              * gcc.dg/graphite/interchange-5.c: Same.
              * gcc.dg/graphite/interchange-6.c: Same.
              * gcc.dg/graphite/interchange-7.c: Same.
              * gcc.dg/graphite/interchange-8.c: Same.
              * gcc.dg/graphite/interchange-9.c: Same.
              * gcc.dg/graphite/interchange-mvt.c: Same.
              * gcc.dg/graphite/pr35356-1.c (foo): Same.
              * gcc.dg/graphite/pr35356-3.c: Same.
              * gcc.dg/graphite/pr37485.c: Same.
              * gcc/testsuite/gcc.dg/graphite/run-id-pr67700-1.c: New test case.
              * gcc.dg/graphite/scop-1.c (int toto): Modified to match the pattern.
              * gcc.dg/graphite/scop-11.c: Same.
              * gcc.dg/graphite/scop-5.c: Same.
              * gcc.dg/graphite/uns-block-1.c: Same.
              * gcc.dg/graphite/uns-interchange-9.c: Same.
              * gfortran.dg/graphite/block-1.f90: Same.
              * gfortran.dg/graphite/interchange-3.f90: Same.
              * gfortran.dg/graphite/pr14741.f90: Same.
      
      From-SVN: r228215
      Sebastian Pop committed
    • re PR tree-optimization/67700 ([graphite] miscompile due to wrong codegen) · d5b5a232
      fix PR67700
      
      The patch makes the detection of scop parameters in parameter_index_in_region a
      bit more conservative by discarding scalar variables defined in function of data
      references defined in the scop.
      
      2015-09-25  Aditya Kumar  <aditya.k7@samsung.com>
                      Sebastian Pop  <s.pop@samsung.com>
      
                      PR tree-optimization/67700
                      * graphite-sese-to-poly.c (parameter_index_in_region): Call
                      invariant_in_sese_p_rec.
                      (extract_affine): Same.
                      (rewrite_cross_bb_scalar_deps): Call update_ssa.
                      * sese.c (invariant_in_sese_p_rec): Export.  Handle vdefs and vuses.
                      * sese.h (invariant_in_sese_p_rec): Declare.
      
                      * testsuite/gcc.dg/graphite/run-id-pr67700.c: New.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r228214
      Aditya Kumar committed
  13. 20 Sep, 2015 1 commit
    • switch from gimple to gimple* · 355fe088
      This renames the gimple_statement_base struct to gimple removes the
      typedef of gimple_statement_base * to gimple, and then adjusts all of
      the places that use the type.
      
      gcc/ChangeLog:
      
      2015-09-19  Trevor Saunders  <tbsaunde@tbsaunde.org>
      
      	* coretypes.h (gimple): Change typedef to be a forward
      	declaration.
      	* gimple.h (gimple_statement_base): rename to gimple.
      	* (all functions and types using gimple): Adjust.
      	* *.[ch]: Likewise.
      
      gcc/cp/ChangeLog:
      
      2015-09-19  Trevor Saunders  <tbsaunde@tbsaunde.org>
      
      	* cp-gimplify.c (gimplify_must_not_throw_expr): Adjust.
      
      From-SVN: r227941
      Trevor Saunders committed
  14. 08 Sep, 2015 1 commit
    • Remove limit_scops · 74032f47
      This patch removes graphite-scop-detection.c:limit_scops function and fix
      related issues arising because of that. The functionality limit_scop was added
      as an intermediate step to discard the loops which graphite could not
      handle. Removing limit_scop required handling of different cases of loops and
      surrounding code.  The scop is now larger so most test cases required 'number of
      scops detected' to be fixed. By increasing the size of scop we can now optimize
      loops which are 'siblings' of each other. This could enable loop fusion on a
      number of loops. Since in the graphite framework we mostly want to opimize
      loop-nests/adjacent-loops, we now discard scops with less than 2 loops. We
      also discard scops without any data references.
      
      Essentially:
       - Remove limite_scops.
       - Only select scops when there are at least two loops (loop nest or, side by side).
       - Discard loops without data-refs.
       - Fix test cases.
      
      Passes bootstrap and reg-test.
      
      gcc/ChangeLog:
      
      2015-09-02  Aditya Kumar  <hiraditya@msn.com>
                  Sebastian Pop  <s.pop@samsung.com>
      
              * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
              Return the parameter if it was saved in corresponding
              parameter_rename_map of the region.
              (copy_def): Copy def from sese region to the newly created region.
              (copy_internal_parameters): Copy all the internal parameters defined
              within a region to the newly created region.
              (graphite_regenerate_ast_isl): Copy parameters to the new region before
              translating isl to gimple.
              * graphite-scop-detection.c (graphite_can_represent_loop): Bail out if
                the loop-nest does not have any data-references.
              (build_graphite_scops): Create a scop only when there is at least one
              loop inside it.
              (contains_only_close_phi_nodes): Deleted.
              (print_graphite_scop_statistics): Deleted
              (print_graphite_statistics): Deleted
              (limit_scops): Deleted.
              (build_scops): Removed call to limit_scops.
              * sese.c (new_sese): Construct.
              (free_sese): Destruct.
              (sese_add_exit_phis_edge): update_stmt after exit phi edge has been
              added.
              (set_rename): Pass sese region so that parameters inside the region can
              be added to its parameter_rename_map.
              (rename_uses): Pass sese region.
              (graphite_copy_stmts_from_block): Do not copy parameters that have been
              generated in the header of the scop. For each SSA_NAME in the
              parameter_rename_map rename its usage.
              (invariant_in_sese_p_rec): Return false if tree t is defined outside
              sese region.
              (scalar_evolution_in_region): If the tree t is invariant just return t.
              * sese.h: Added a parameter renamne map (parameter_rename_map_t) to
                struct sese to keep track of all the parameters which need renaming.
              * tree-data-ref.c (loop_nest_has_data_refs): Check if a loop nest has
                any data-refs.
              * tree-data-ref.h: Declaration of loop_nest_has_data_refs.
      
      gcc/testsuite/ChangeLog:
      
      2015-09-02  Aditya Kumar  <hiraditya@msn.com>
                  Sebastian Pop  <s.pop@samsung.com>
      
              * gcc.dg/graphite/block-0.c: Modifed test case to match current output.
              * gcc.dg/graphite/block-1.c: Same.
              * gcc.dg/graphite/block-5.c: Same.
              * gcc.dg/graphite/block-6.c: Same.
              * gcc.dg/graphite/interchange-1.c: Same.
              * gcc.dg/graphite/interchange-10.c: Same.
              * gcc.dg/graphite/interchange-11.c: Same.
              * gcc.dg/graphite/interchange-13.c: Same.
              * gcc.dg/graphite/interchange-14.c: Same.
              * gcc.dg/graphite/interchange-3.c: Same.
              * gcc.dg/graphite/interchange-4.c: Same.
              * gcc.dg/graphite/interchange-7.c: Same.
              * gcc.dg/graphite/interchange-8.c: Same.
              * gcc.dg/graphite/interchange-9.c: Same.
              * gcc.dg/graphite/isl-codegen-loop-dumping.c: Same.
              * gcc.dg/graphite/pr35356-1.c (foo): Same.
              * gcc.dg/graphite/pr37485.c: Same.
              * gcc.dg/graphite/scop-0.c (int toto): Same.
              * gcc.dg/graphite/scop-1.c: Same.
              * gcc.dg/graphite/scop-10.c: Same.
              * gcc.dg/graphite/scop-11.c: Same.
              * gcc.dg/graphite/scop-12.c: Same.
              * gcc.dg/graphite/scop-13.c: Same.
              * gcc.dg/graphite/scop-16.c: Same.
              * gcc.dg/graphite/scop-17.c: Same.
              * gcc.dg/graphite/scop-18.c: Same.
              * gcc.dg/graphite/scop-2.c: Same.
              * gcc.dg/graphite/scop-21.c (int test): Same.
              * gcc.dg/graphite/scop-22.c (void foo): Same.
              * gcc.dg/graphite/scop-4.c: Same.
              * gcc.dg/graphite/scop-5.c: Same.
              * gcc.dg/graphite/scop-6.c: Same.
              * gcc.dg/graphite/scop-7.c: Same.
              * gcc.dg/graphite/scop-8.c: Same.
              * gcc.dg/graphite/scop-9.c: Same.
              * gcc.dg/graphite/scop-mvt.c (void mvt): Introduced dependency so that
                data-refs remain inside the inner loop.
              * gcc.dg/graphite/uns-block-1.c: Modifed test case to match o/p.
              * gcc.dg/graphite/uns-interchange-14.c: Same.
              * gcc.dg/graphite/uns-interchange-9.c: Same.
              * gfortran.dg/graphite/interchange-3.f90
      
      libgomp/ChangeLog:
      
      2015-09-04  Aditya Kumar  <hiraditya@msn.com>
                  Sebastian Pop  <s.pop@samsung.com>
      
              * testsuite/libgomp.graphite/bounds.c (int foo): Modifed test case to
                match o/p.
              * testsuite/libgomp.graphite/force-parallel-1.c (void parloop): Same.
              * testsuite/libgomp.graphite/force-parallel-4.c: Same.
              * testsuite/libgomp.graphite/force-parallel-5.c: Same.
              * testsuite/libgomp.graphite/force-parallel-7.c: Same.
              * testsuite/libgomp.graphite/force-parallel-8.c: Same.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r227567
      Aditya Kumar committed
  15. 05 Jan, 2015 1 commit
  16. 09 Jul, 2014 1 commit
  17. 02 Jan, 2014 1 commit
  18. 26 Apr, 2013 1 commit
    • This patch is the main part of a consolodation of the hash_table patches to the... · 4a8fb1a1
      This patch is the main part of a consolodation of the hash_table
      patches to the cxx-conversion branch for files not under gcc/config.
      
      Update various hash tables from htab_t to hash_table.
      Modify types and calls to match.
      
      * tree-parloops.c'reduction
      * tree-parloops.c'name_to_copy
      
      Fold reduction_info_hash and reduction_info_eq into new struct
      reduction_hasher.  Fold name_to_copy_elt_eq and name_to_copy_elt_hash
      into new struct name_to_copy_hasher.
      
      * trans-mem.c'tm_log
      
      Fold tm_log_hash, tm_log_eq, tm_log_free into new struct log_entry_hasher.
      
      * trans-mem.c'tm_memopt_value_numbers
      
      Fold tm_memop_hash, tm_memop_eq into new struct tm_memop_hasher.
      
      * tree-ssa-strlen.c'decl_to_stridxlist_htab
      
      Fold decl_to_stridxlist_hash into new struct stridxlist_hasher.
      
      * tree-ssa-loop-ivopts.c'ivopts_data::inv_expr_tab
      
      Fold htab_inv_expr_hash and htab_inv_expr_eq into new struct
      iv_inv_expr_hasher.
      
      * tree-ssa-uncprop.c'equiv
      
      Equiv renamed to val_ssa_equiv because of name ambiguity with local variables.
      
      Fold equiv_hash, equiv_eq and equiv_free into new struct val_ssa_equiv_hasher.
      
      Renamed variables equiv_hash_elt to an_equiv_elt because of name ambiguity
      with struct type.  Changed equiv_hash_elt_p to an_equiv_elt_p to match.
      
      * tree-ssa-phiopt.c'seen_ssa_names
      
      Fold name_to_bb_hash and name_to_bb_eq into new struct ssa_names_hasher.
      
      * tree-ssa-structalias.c'pointer_equiv_class_table
      * tree-ssa-structalias.c'location_equiv_class_table
      
      Fold equiv_class_label_hash and equiv_class_label_eq into new
      struct equiv_class_hasher.
      
      * tree-ssa-structalias.c'shared_bitmap_table
      
      Fold shared_bitmap_hash and shared_bitmap_eq into new struct
      shared_bitmap_hasher.
      
      * tree-ssa-live.c'var_map_base_init::tree_to_index
      
      New struct tree_int_map_hasher.
      
      * tree-sra.c'candidates
      
      Fold uid_decl_map_hash and uid_decl_map_eq into new struct
      uid_decl_hasher.  This change moves the definitions from tree-ssa.c
      into tree-sra.c and removes the declarations from tree-flow.h
      
      tree-browser.c
      
      Remove stale declaration of removed TB_parent_eq.
      Fix template parameter for base class to match value_type.
      
      gimple.h
      
      Use gimplify_hasher::hash rather than gimple_tree_hash in the
        assertion check.
      Change return values to match return type. (I.e. no conversions.)
      
      * graphite-clast-to-gimple.c'ivs_params::newivs_index
      * graphite-clast-to-gimple.c'ivs_params::params_index
      * graphite-clast-to-gimple.c'print_generated_program::params_index
      * graphite-clast-to-gimple.c'gloog::newivs_index
      * graphite-clast-to-gimple.c'gloog::params_index
      * graphite.c graphite_transform_loops::bb_pbb_mapping
      * sese.c copy_bb_and_scalar_dependences::rename_map
      
      Move hash table declarations to a new graphite-htab.h, because they
      are used in few places.
      
      Remove unused:
      
      htab_t scop::original_pddrs
      SCOP_ORIGINAL_PDDRS
      
      Remove unused:
      
      insert_loop_close_phis
      insert_guard_phis
      debug_ivtype_map
      ivtype_map_elt_info
      new_ivtype_map_elt
      
      * gimplify.c'gimplify_ctx::temp_htab
      
      Move struct gimple_temp_hash_elt and struct gimplify_ctx to a new
      gimplify-ctx.h, because they are used few places.
      
      * cselib.c'cselib_hash_table
      * gcse.c'pre_ldst_table
      * gimple-ssa-strength-reduction.c'base_cand_map
      * haifa-sched.c'delay_htab
      * haifa-sched.c'delay_htab_i2
      * ira-color.c'allocno_hard_regs_htab
      * ira-costs.c'cost_classes_htab
      * loop-invariant.c'merge_identical_invariants::eq
      * loop-iv.c'bivs
      * loop-unroll.c'opt_info::insns_to_split
      * loop-unroll.c'opt_info::insns_with_var_to_expand
      * passes.c'name_to_pass_map
      * plugin.c'event_tab
      * postreload-gcse.c'expr_table
      * store-motion.c'store_motion_mems_table
      * tree-cfg.c'discriminator_per_locus
      * tree-scalar-evolution.c'resolve_mixers::cache
      * tree-ssa-dom.c'avail_exprs
      
      Remove unused:
      dse.c bitmap clear_alias_sets
      dse.c bitmap disqualified_clear_alias_sets
      dse.c alloc_pool clear_alias_mode_pool
      dse.c dse_step2_spill
      dse.c dse_step5_spill
      graphds.h htab_t graph::indices
      
      * attribs.c'scoped_attributes::attribute_hash
      * bitmap.c'bitmap_desc_hash
      * dwarf2cfi.c'trace_index
      * dwarf2out.c'break_out_includes::cu_hash_table
      * dwarf2out.c'copy_decls_for_unworthy_types::decl_table
      * dwarf2out.c'optimize_external_refs::map
      * dwarf2out.c'output_comp_unit::extern_map
      * dwarf2out.c'output_comdat_type_unit::extern_map
      * dwarf2out.c'output_macinfo::macinfo_htab
      * dwarf2out.c'optimize_location_lists::htab
      * dwarf2out.c'dwarf2out_finish::comdat_type_table
      * except.c'ehspec_hash_type
      * except.c'assign_filter_values::ttypes
      * except.c'assign_filter_values::ehspec
      * except.c'sjlj_assign_call_site_values::ar_hash
      * except.c'convert_to_eh_region_ranges::ar_hash
      * trans-mem.c'tm_new_mem_hash
      * tree-browser.c'TB_up_ht
      * tree-eh.c'finally_tree
      
      Move the declaration of hash_table <alloc_pool_hasher> alloc_pool_hash
      in alloc-pool.c to after the method definitions for its parameter
      class.
      
      * ggc-common.c'loc_hash
      * ggc-common.c'ptr_hash
      
      Add a new hash_table method elements_with_deleted to meet the needs of
      gcc-common.c.
      
      Correct many methods with parameter types compare_type to the correct
      value_type.  (Correct code was unlikely to notice the change, but
      incorrect code will.)
      
      * tree-complex.c'complex_variable_components
      * tree-parloops.c'eliminate_local_variables_stmt::decl_address
      * tree-parloops.c'separate_decls_in_region::decl_copies
      
      Move hash table declarations to a new tree-hasher.h, to resolve
      compilation dependences and because they are used in few places.
      
      * lto-streamer.h'output_block::string_hash_table
      * lto-streamer-in.c'file_name_hash_table
      * lto-streamer.c'tree_htab
      
      The struct string_slot moves from data-streamer.h to lto-streamer.h to
      resolve compilation dependences.
      
      Tested on x86_64.
      
      
      Index: gcc/ChangeLog
      
      2013-04-25  Lawrence Crowl  <crowl@google.com>
      
      	* Makefile.in: Update as needed below.
      
      	* alloc-pool.c (static hash_table <alloc_pool_hasher> alloc_pool_hash):
      	Move declaration to after the type's method definitons.
      
      	* attribs.c (htab_t scoped_attributes::attribute_hash):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* bitmap.c (htab_t bitmap_desc_hash):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* cselib.c (htab_t cselib_hash_table):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* data-streamer.h (struct string_slot): Move to lto-streamer.h.
      	(hash_string_slot_node): Move implementation into lto-streamer.h
      	struct string_slot_hasher.
      	(eq_string_slot_node): Likewise.
      
      	* data-streamer-out.c: Update output_block::string_hash_table
      	dependent calls and types.
      
      	* dwarf2cfi.c (htab_t trace_index):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* dwarf2out.c (htab_t break_out_includes::cu_hash_table):
      	Change type to hash_table.  Update dependent calls and types.
      	(htab_t copy_decls_for_unworthy_types::decl_table): Likewise.
      	(htab_t optimize_external_refs::map): Likewise.
      	(htab_t output_comp_unit::extern_map): Likewise.
      	(htab_t output_comdat_type_unit::extern_map): Likewise.
      	(htab_t output_macinfo::macinfo_htab): Likewise.
      	(htab_t optimize_location_lists::htab): Likewise.
      	(htab_t dwarf2out_finish::comdat_type_table): Likewise.
      
      	* except.c (htab_t ehspec_hash_type):
      	Change type to hash_table.  Update dependent calls and types.
      	(assign_filter_values::ttypes): Likewise.
      	(assign_filter_values::ehspec): Likewise.
      	(sjlj_assign_call_site_values::ar_hash): Likewise.
      	(convert_to_eh_region_ranges::ar_hash): Likewise.
      
      	* gcse.c (htab_t pre_ldst_table):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* ggc-common.c (htab_t saving_htab):
      	Change type to hash_table.  Update dependent calls and types.
      	(htab_t loc_hash): Likewise.
      	(htab_t ptr_hash): Likewise.
      	(call_count): Rename ggc_call_count.
      	(call_alloc): Rename ggc_call_alloc.
      	(loc_descriptor): Rename make_loc_descriptor.
      	(add_statistics): Rename ggc_add_statistics.
      
      	* ggc-common.c (saving_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* gimple.h (struct gimplify_ctx): Move to gimplify-ctx.h.
      	(push_gimplify_context): Likewise.
      	(pop_gimplify_context): Likewise.
      	(struct gimple_temp_hash_elt): Added.
      	(struct gimplify_hasher): Likewise.
      	(struct gimplify_ctx.temp_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* gimple-fold.c: Include gimplify-ctx.h.
      
      	* gimple-ssa-strength-reduction.c (htab_t base_cand_map):
      	Change type to hash_table.  Update dependent calls and types.
      	(base_cand_dump_callback): Rename to ssa_base_cand_dump_callback to
      	avoid potential global name collision.
      
      	* gimplify.c: Include gimplify-ctx.h.
      	(struct gimple_temp_hash_elt): Move to gimplify-ctx.h.
      	(htab_t gimplify_ctx::temp_htab):
      	Update dependent calls and types for new type hash_table.
      	(gimple_tree_hash): Move into gimplify_hasher in gimplify-ctx.h.
      	(gimple_tree_eq): Move into gimplify_hasher in gimplify-ctx.h.
      
      	* gimplify-ctx.h: New.
      	(struct gimple_temp_hash_elt): Move from gimplify.c.
      	(class gimplify_hasher): New.
      	(struct gimplify_ctx): Move from gimple.h.
      	(htab_t gimplify_ctx::temp_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* graphite-clast-to-gimple.c: Include graphite-htab.h.
      	(htab_t ivs_params::newivs_index):
      	Change type to hash_table.  Update dependent calls and types.
      	(htab_t ivs_params::params_index): Likewise.
      	(htab_t print_generated_program::params_index): Likewise.
      	(htab_t gloog::newivs_index): Likewise.
      	(htab_t gloog::params_index): Likewise.
      
      	* graphite.c: Include graphite-htab.h.
      	4htab_t graphite_transform_loops::bb_pbb_mapping):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* graphite-clast-to-gimple.h: (extern gloog) Move to graphite-htab.h.
      	(bb_pbb_map_hash): Fold into bb_pbb_htab_type in graphite-htab.h.
      	(eq_bb_pbb_map): Fold into bb_pbb_htab_type in graphite-htab.h.
      
      	* graphite-dependences.c: Include graphite-htab.h.
      	(loop_is_parallel_p): Change hash table type of parameter.
      
      	* graphite-htab.h: New.
      	(typedef hash_table <bb_pbb_hasher> bb_pbb_htab_type): New.
      	(extern find_pbb_via_hash): Move from graphite-poly.h.
      	(extern loop_is_parallel_p): Move from graphite-poly.h.
      	(extern get_loop_body_pbbs): Move from graphite-poly.h.
      
      	* graphite-poly.h (extern find_pbb_via_hash): Move to graphite-htab.h.
      	(extern loop_is_parallel_p): Move to graphite-htab.h.
      	(extern get_loop_body_pbbs): Move to graphite-htab.h.
      
      	* haifa-sched.c (htab_t delay_htab):
      	Change type to hash_table.  Update dependent calls and types.
      	(htab_t delay_htab_i2): Likewise.
      
      	* ira-color.c (htab_t allocno_hard_regs_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* ira-costs.c (htab_t cost_classes_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* loop-invariant.c (htab_t merge_identical_invariants::eq):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* loop-iv.c (htab_t bivs):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* loop-unroll.c (htab_t opt_info::insns_to_split):
      	Change type to hash_table.  Update dependent calls and types.
      	(htab_t opt_info::insns_with_var_to_expand): Likewise.
      
      	* lto-streamer.h (struct string_slot): Move from data-streamer.h
      	(struct string_slot_hasher): New.
      	(htab_t output_block::string_hash_table):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* lto-streamer-in.c (freeing_string_slot_hasher): New.
      	(htab_t file_name_hash_table):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* lto-streamer-out.c: Update output_block::string_hash_table dependent
      	calls and types.
      
      	* lto-streamer.c (htab_t tree_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* omp-low.c: Include gimplify-ctx.h.
      
      	* passes.c (htab_t name_to_pass_map):
      	Change type to hash_table.  Update dependent calls and types.
      	(pass_traverse): Rename to passes_pass_traverse.
      
      	* plugin.c (htab_t event_tab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* postreload-gcse.c (htab_t expr_table):
      	Change type to hash_table.  Update dependent calls and types.
      	(dump_hash_table_entry): Rename dump_expr_hash_table_entry.
      
      	* sese.c (debug_rename_map_1): Make extern.
      	(htab_t copy_bb_and_scalar_dependences::rename_map):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* sese.h (extern debug_rename_map): Move to .c file.
      
      	* store-motion.c (htab_t store_motion_mems_table):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* trans-mem.c (htab_t tm_new_mem_hash):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-browser.c (htab_t TB_up_ht):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-cfg.c (htab_t discriminator_per_locus):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-complex.c: Include tree-hasher.h
      	(htab_t complex_variable_components):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-eh.c (htab_t finally_tree):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-flow.h (extern int_tree_map_hash): Moved into tree-hasher
      	struct int_tree_hasher.
      	(extern int_tree_map_eq): Likewise.
      	(uid_decl_map_hash): Removed.
      	(extern decl_tree_map_eq): Likewise.
      
      	* tree-hasher.h: New.
      	(struct int_tree_hasher): New.
      	(typedef int_tree_htab_type): New.
      
      	* tree-inline.c: Include gimplify-ctx.h.
      
      	* tree-mudflap.c: Include gimplify-ctx.h.
      
      	* tree-parloops.c: Include tree-hasher.h.
      	(htab_t eliminate_local_variables_stmt::decl_address):
      	Change type to hash_table.  Update dependent calls and types.
      	(htab_t separate_decls_in_region::decl_copies): Likewise.
      
      	* tree-scalar-evolution.c (htab_t resolve_mixers::cache):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-sra.c (candidates):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-ssa.c (int_tree_map_eq): Moved into struct int_tree_hasher
      	in tree-flow.h.
      	(int_tree_map_hash): Likewise.
      
      	* tree-ssa-dom.c (htab_t avail_exprs):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-ssa-live.c (var_map_base_init::tree_to_index):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-ssa-loop-ivopts.c (struct ivopts_data.inv_expr_tab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-ssa-phiopt.c (seen_ssa_names):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-ssa-strlen.c (decl_to_stridxlist_htab):
      	Change type to hash_table.  Update dependent calls and types.
      
      	* tree-ssa-uncprop.c (equiv):
      	Change type to hash_table.  Update dependent calls and types.
      
      From-SVN: r198329
      Lawrence Crowl committed
  19. 02 Apr, 2013 1 commit
    • Remove unused symbols related to ivtype_map. · 622849c9
      Remove unused symbols related to ivtype_map.  This map does not appear to
      exist and I see no evidence of its removal in the ChangeLog.
      
      Tested on x86_64.
      
      
      Index: gcc/ChangeLog
      
      2013-04-02  Lawrence Crowl  <crowl@google.com>
      
      	* sese.h (struct ivtype_map_elt_s): Remove unused.
      	(extern debug_ivtype_map): Remove unused.
      	(extern eq_ivtype_map_elts): Remove unused.
      	* sese.c (debug_ivtype_map): Removed unused.
      	(debug_ivtype_map_1): Removed unused.
      	(debug_ivtype_elt): Remove unused.
      	(eq_ivtype_map_elts): Remove unused.
      
      From-SVN: r197374
      Lawrence Crowl committed
  20. 29 Mar, 2013 1 commit
    • Remove various unused items. · 58a49189
      2013-03-28  Lawrence Crowl  <crowl@google.com>
      
      Index: gcc/ChangeLog
      
      	* graphds.h (struct graph.indicies): Remove unused.
      	* graphite-poly.h (struct graph.original_pddrs): Remove unused.
      	(SCOP_ORIGINAL_PDDRS): Remove unused.
      	* sese.h (extern insert_loop_close_phis): Removed unused.
      	(extern insert_guard_phis): Removed unused.
      	(extern ivtype_map_elt_info): Removed unused.
      	(new_ivtype_map_elt): Removed unused.
      	* sese.c (ivtype_map_elt_info): Removed unused.
      
      From-SVN: r197226
      Lawrence Crowl committed
  21. 10 Jan, 2013 1 commit
  22. 04 Jan, 2013 1 commit
  23. 18 Nov, 2012 1 commit
    • This patch rewrites the old VEC macro-based interface into a new one based on… · 9771b263
      This patch rewrites the old VEC macro-based interface into a new one based on the template class 'vec'.
      
      This patch rewrites the old VEC macro-based interface into a new one
      based on the template class 'vec'.  The user-visible changes are
      described in http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec.
      
      I have tested the patch pretty extensively:
      
      - Regular bootstraps on x86_64, ppc, ia64, sparc and hppa.
      - Bootstraps with --enable-checking=release
      - Bootstraps with --enable-checking=gc,gcac
      - Basic builds on all targets (using contrib/config-list.mk).
      
      We no longer access the vectors via VEC_* macros.  The pattern is
      "VEC_operation (T, A, V, args)" becomes "V.operation (args)".
      
      The only thing I could not do is create proper ctors and dtors for the
      vec class.  Since these vectors are stored in unions, we
      have to keep them as PODs (C++03 does not allow non-PODs in unions).
      
      This means that creation and destruction must be explicit.  There is a
      new method vec<type, allocation, layout>::create() and another vec<type,
      allocation, layout>::destroy() to allocate the internal vector.
      
      For vectors that must be pointers, there is a family of free functions
      that implement the operations that need to tolerate NULL vectors.
      These functions all start with the prefix 'vec_safe_'.  See the wiki
      page for details.
      
      The gengtype change removes the special handling for VEC() that used
      to exist in gengtype. Additionally, it allows gengtype to recognize
      templates of more than one argument and introduces the concept of an
      undefined type (useful for template arguments that may or may not be
      types).
      
      When a TYPE_UNDEFINED is reached, gengtype will ignore it if it
      happens inside a type marked with GTY((user)).  Otherwise, it will
      emit an error.
      
      Finally, gengtype rejects root types marked GTY((user)) that are not
      first class pointers.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	VEC API overhaul (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
      
      	* vec.c (register_overhead): Convert it into
      	member function of vec_prefix.
      	(release_overhead): Likewise.
      	(calculate_allocation): Likewise.
      	(vec_heap_free): Remove.
      	(vec_gc_o_reserve_1): Remove.
      	(vec_heap_o_reserve_1): Remove.
      	(vec_stack_o_reserve_1): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(register_stack_vec): New.
      	(stack_vec_register_index): New.
      	(unregister_stack_vec): New.
      	(vec_assert_fail): Remove.
      	* vec.h: Conditionally include ggc.h.  Document conditional
      	hackery.
      	Update top-level documentation.
      	(ALONE_VEC_CHECK_INFO): Remove.
      	(VEC_CHECK_INFO): Remove.
      	(ALONE_VEC_CHECK_DECL): Remove.
      	(VEC_CHECK_DECL): Remove.
      	(ALONE_VEC_CHECK_PASS): Remove.
      	(VEC_CHECK_PASS): Remove.
      	(VEC_ASSERT): Remove.
      	(vec_prefix): Add friends va_gc, va_gc_atomic, va_heap and
      	va_stack.
      	Mark fields alloc_ and num_ as protected.
      	(struct vec_t): Remove.  Remove all function members.
      	(struct vl_embed): Declare.
      	(struct vl_ptr): Declare.
      	(free): Remove.
      	(reserve_exact): Remove.
      	(reserve): Remove.
      	(safe_splice): Remove.
      	(safe_push): Remove.
      	(safe_grow): Remove.
      	(safe_grow_cleared): Remove.
      	(safe_insert): Remove.
      	(DEF_VEC_I): Remove.
      	(DEF_VEC_ALLOC_I): Remove.
      	(DEF_VEC_P): Remove.
      	(DEF_VEC_ALLOC_P): Remove.
      	(DEF_VEC_O): Remove.
      	(DEF_VEC_ALLOC_O): Remove.
      	(DEF_VEC_ALLOC_P_STACK): Remove.
      	(DEF_VEC_ALLOC_O_STACK): Remove.
      	(DEF_VEC_ALLOC_I_STACK): Remove.
      	(DEF_VEC_A): Remove.
      	(DEF_VEC_ALLOC_A): Remove.
      	(vec_stack_p_reserve_exact_1): Remove.
      	(vec_stack_o_reserve): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(VEC_length): Remove.
      	(VEC_empty): Remove.
      	(VEC_address): Remove.
      	(vec_address): Remove.
      	(VEC_last): Remove.
      	(VEC_index): Remove.
      	(VEC_iterate): Remove.
      	(VEC_embedded_size): Remove.
      	(VEC_embedded_init): Remove.
      	(VEC_free): Remove.
      	(VEC_copy): Remove.
      	(VEC_space): Remove.
      	(VEC_reserve): Remove.
      	(VEC_reserve_exact): Remove.
      	(VEC_splice): Remove.
      	(VEC_safe_splice): Remove.
      	(VEC_quick_push): Remove.
      	(VEC_safe_push): Remove.
      	(VEC_pop): Remove.
      	(VEC_truncate): Remove.
      	(VEC_safe_grow): Remove.
      	(VEC_replace): Remove.
      	(VEC_quick_insert): Remove.
      	(VEC_safe_insert): Remove.
      	(VEC_ordered_remove): Remove.
      	(VEC_unordered_remove): Remove.
      	(VEC_block_remove): Remove.
      	(VEC_lower_bound): Remove.
      	(VEC_alloc): Remove.
      	(VEC_qsort): Remove.
      
      	(va_heap): Declare.
      	(va_heap::default_layout): New typedef to vl_ptr.
      	(va_heap::reserve): New.
      	(va_heap::release): New.
      	(va_gc): Declare.
      	(va_gc::default_layout): New typedef to vl_embed.
      	(va_gc::reserve): New.
      	(va_gc::release): New.
      	(va_gc_atomic): Declare.  Inherit from va_gc.
      	(va_stack): Declare.
      	(va_stack::default_layout): New typedef to vl_ptr.
      	(va_stack::alloc): New.
      	(va_stack::reserve): New.
      	(va_stack::release): New.
      	(register_stack_vec): Declare.
      	(stack_vec_register_index): Declare.
      	(unregister_stack_vec): Declare.
      
      	(vec<T, A = va_heap, L = typename A::default_layout>): Declare
      	empty vec template.
      	(vec<T, A, vl_embed>): Partial specialization for embedded
      	layout.
      	(vec<T, A, vl_embed>::allocated): New.
      	(vec<T, A, vl_embed>::length): New.
      	(vec<T, A, vl_embed>::is_empty): New.
      	(vec<T, A, vl_embed>::address): New.
      	(vec<T, A, vl_embed>::operator[]): New.
      	(vec<T, A, vl_embed>::last New.
      	(vec<T, A, vl_embed>::space): New.
      	(vec<T, A, vl_embed>::iterate): New.
      	(vec<T, A, vl_embed>::iterate): New.
      	(vec<T, A, vl_embed>::copy): New.
      	(vec<T, A, vl_embed>::splice): New.
      	(vec<T, A, vl_embed>::quick_push New.
      	(vec<T, A, vl_embed>::pop New.
      	(vec<T, A, vl_embed>::truncate): New.
      	(vec<T, A, vl_embed>::quick_insert): New.
      	(vec<T, A, vl_embed>::ordered_remove): New.
      	(vec<T, A, vl_embed>::unordered_remove): New.
      	(vec<T, A, vl_embed>::block_remove): New.
      	(vec<T, A, vl_embed>::qsort): New.
      	(vec<T, A, vl_embed>::lower_bound): New.
      	(vec<T, A, vl_embed>::embedded_size): New.
      	(vec<T, A, vl_embed>::embedded_init): New.
      	(vec<T, A, vl_embed>::quick_grow): New.
      	(vec<T, A, vl_embed>::quick_grow_cleared): New.
      	(vec_safe_space): New.
      	(vec_safe_length): New.
      	(vec_safe_address): New.
      	(vec_safe_is_empty): New.
      	(vec_safe_reserve): New.
      	(vec_safe_reserve_exact): New.
      	(vec_alloc): New.
      	(vec_free): New.
      	(vec_safe_grow): New.
      	(vec_safe_grow_cleared): New.
      	(vec_safe_iterate): New.
      	(vec_safe_push): New.
      	(vec_safe_insert): New.
      	(vec_safe_truncate): New.
      	(vec_safe_copy): New.
      	(vec_safe_splice): New.
      
      	(vec<T, A, vl_ptr>): New partial specialization for the space
      	efficient layout.
      	(vec<T, A, vl_ptr>::exists): New.
      	(vec<T, A, vl_ptr>::is_empty): New.
      	(vec<T, A, vl_ptr>::length): New.
      	(vec<T, A, vl_ptr>::address): New.
      	(vec<T, A, vl_ptr>::operator[]): New.
      	(vec<T, A, vl_ptr>::operator!=): New.
      	(vec<T, A, vl_ptr>::operator==): New.
      	(vec<T, A, vl_ptr>::last): New.
      	(vec<T, A, vl_ptr>::space): New.
      	(vec<T, A, vl_ptr>::iterate): New.
      	(vec<T, A, vl_ptr>::copy): New.
      	(vec<T, A, vl_ptr>::reserve): New.
      	(vec<T, A, vl_ptr>::reserve_exact): New.
      	(vec<T, A, vl_ptr>::splice): New.
      	(vec<T, A, vl_ptr>::safe_splice): New.
      	(vec<T, A, vl_ptr>::quick_push): New.
      	(vec<T, A, vl_ptr>::safe_push): New.
      	(vec<T, A, vl_ptr>::pop): New.
      	(vec<T, A, vl_ptr>::truncate): New.
      	(vec<T, A, vl_ptr>::safe_grow): New.
      	(vec<T, A, vl_ptr>::safe_grow_cleared): New.
      	(vec<T, A, vl_ptr>::quick_grow): New.
      	(vec<T, A, vl_ptr>::quick_grow_cleared): New.
      	(vec<T, A, vl_ptr>::quick_insert): New.
      	(vec<T, A, vl_ptr>::safe_insert): New.
      	(vec<T, A, vl_ptr>::ordered_remove): New.
      	(vec<T, A, vl_ptr>::unordered_remove): New.
      	(vec<T, A, vl_ptr>::block_remove): New.
      	(vec<T, A, vl_ptr>::qsort): New.
      	(vec<T, A, vl_ptr>::lower_bound): New.
      	(vec_stack_alloc): Define.
      	(FOR_EACH_VEC_SAFE_ELT): Define.
      	* vecir.h: Remove.  Update all users.
      	* vecprim.h: Remove.  Update all users.
      	Move uchar to coretypes.h.
      
      	* Makefile.in (VEC_H): Add $(GGC_H).
      	Remove vecir.h and vecprim.h dependencies everywhere.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	* gengtype-lex.l (VEC): Remove.
      	Add characters in the set [\!\>\.-].
      	* gengtype-parse.c (token_names): Remove "VEC".
      	(require_template_declaration): Remove handling of VEC_TOKEN.
      	(type): Likewise.
      	Call create_user_defined_type when parsing GTY((user)).
      	* gengtype-state.c (type_lineloc): handle TYPE_UNDEFINED.
      	(write_state_undefined_type): New.
      	(write_state_type): Call write_state_undefined_type for
      	TYPE_UNDEFINED.
      	(read_state_type): Call read_state_undefined_type for
      	TYPE_UNDEFINED.
      	* gengtype.c (dbgprint_count_type_at): Handle TYPE_UNDEFINED.
      	(create_user_defined_type): Make extern.
      	(type_for_name): Factor out of resolve_typedef.
      	(create_undefined_type): New
      	(resolve_typedef): Call it when we cannot find a previous
      	typedef and the type is not a template.
      	(find_structure): Accept TYPE_UNDEFINED.
      	(set_gc_used_type): Add argument ALLOWED_UNDEFINED_TYPES,
      	default to false.
      	Emit an error for TYPE_UNDEFINED unless LEVEL is GC_UNUSED or
      	ALLOWED_UNDEFINED_TYPES is set.
      	Set ALLOWED_UNDEFINED_TYPES to true for TYPE_USER_STRUCT.
      	(filter_type_name): Accept templates with more than one
      	argument.
      	(output_mangled_typename): Handle TYPE_UNDEFINED
      	(walk_type): Likewise.
      	(write_types_process_field): Likewise.
      	(write_func_for_structure): If CHAIN_NEXT is set, ORIG_S
      	should not be a user-defined type.
      	(write_types_local_user_process_field): Handle TYPE_ARRAY,
      	TYPE_NONE and TYPE_UNDEFINED.
      	(write_types_local_process_field): Likewise.
      	(contains_scalar_p): Return 0 for TYPE_USER_STRUCT.
      	(write_root): Reject user-defined types that are not pointers.
      	Handle TYPE_NONE, TYPE_UNDEFINED, TYPE_UNION, TYPE_LANG_STRUCT
      	and TYPE_PARAM_STRUCT.
      	(output_typename): Handle TYPE_NONE, TYPE_UNDEFINED, and
      	TYPE_ARRAY.
      	(dump_typekind): Handle TYPE_UNDEFINED.
      	* gengtype.h (enum typekind): Add TYPE_UNDEFINED.
      	(create_user_defined_type): Declare.
      	(enum gty_token): Remove VEC_TOKEN.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
      
      	* coretypes.h (uchar): Define.
      	* alias.c: Use new vec API in vec.h.
      	* asan.c: Likewise.
      	* attribs.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* builtins.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* combine.c: Likewise.
      	* compare-elim.c: Likewise.
      	* coverage.c: Likewise.
      	* cprop.c: Likewise.
      	* data-streamer.h: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* domwalk.h: Likewise.
      	* dse.c: Likewise.
      	* dwarf2cfi.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarf2out.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* expr.c: Likewise.
      	* expr.h: Likewise.
      	* final.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* function.h: Likewise.
      	* fwprop.c: Likewise.
      	* gcc.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genautomata.c: Likewise.
      	* genextract.c: Likewise.
      	* genopinit.c: Likewise
      	* ggc-common.c: Likewise.
      	* ggc.h: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-ssa-strength-reduction.c: Likewise.
      	* gimple-streamer-in.c: Likewise.
      	* gimple.c: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* graph.c: Likewise.
      	* graphds.c: Likewise.
      	* graphds.h: Likewise.
      	* graphite-blocking.c: Likewise.
      	* graphite-clast-to-gimple.c: Likewise.
      	* graphite-dependences.c: Likewise.
      	* graphite-interchange.c: Likewise.
      	* graphite-optimize-isl.c: Likewise.
      	* graphite-poly.c: Likewise.
      	* graphite-poly.h: Likewise.
      	* graphite-scop-detection.c: Likewise.
      	* graphite-scop-detection.h: Likewise.
      	* graphite-sese-to-poly.c: Likewise.
      	* graphite.c: Likewise.
      	* godump.c: Likewise.
      	* haifa-sched.c: Likewise.
      	* hw-doloop.c: Likewise.
      	* hw-doloop.h: Likewise.
      	* ifcvt.c: Likewise.
      	* insn-addr.h: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-inline-analysis.c: Likewise.
      	* ipa-inline-transform.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-inline.h: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-prop.h: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-ref-inline.h: Likewise.
      	* ipa-ref.c: Likewise.
      	* ipa-ref.h: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-split.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-utils.h: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lra-lives.c: Likewise.
      	* lra.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.h: Likewise.
      	* lto-symtab.c: Likewise.
      	* mcf.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omp-low.c: Likewise.
      	* opts-common.c: Likewise.
      	* opts-global.c: Likewise.
      	* opts.c: Likewise.
      	* opts.h: Likewise.
      	* passes.c: Likewise.
      	* predict.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* profile.h: Likewise.
      	* read-rtl.c: Likewise.
      	* ree.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regrename.c: Likewise.
      	* regrename.h: Likewise.
      	* reload.c: Likewise.
      	* reload.h: Likewise.
      	* reload1.c: Likewise.
      	* rtl.h: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-int.h: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched-ir.h: Likewise.
      	* sel-sched.c: Likewise.
      	* sese.c: Likewise.
      	* sese.h: Likewise.
      	* statistics.h: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* tlink.c: Likewise.
      	* toplev.c: Likewise.
      	* trans-mem.c: Likewise.
      	* tree-browser.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-complex.c: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-diagnostic.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-emutls.c: Likewise.
      	* tree-flow.h: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-inline.h: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-mudflap.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* tree-ssa-strlen.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-tail-merge.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-streamer-in.c: Likewise.
      	* tree-streamer-out.c: Likewise.
      	* tree-streamer.c: Likewise.
      	* tree-streamer.h: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-vect-data-refs.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vect-loop.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-vect-slp.c: Likewise.
      	* tree-vect-stmts.c: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vmsdbgout.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/rs6000/rs6000-c.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/spu/spu-c.c: Likewise.
      	* config/vms/vms.c: Likewise.
      	* config/vxworks.c: Likewise.
      	* config/epiphany/resolve-sw-modes.c: Likewise.
      
      From-SVN: r193595
      Diego Novillo committed
  24. 27 Jul, 2011 1 commit
    • Fix PR47691: do not abort compilation when code generation fails · bd4a54da
      2011-07-27  Sebastian Pop  <sebastian.pop@amd.com>
      
      	PR middle-end/47691
      	* graphite-clast-to-gimple.c (translate_clast_user): Update use of
      	copy_bb_and_scalar_dependences.
      	* sese.c (rename_uses): Do not call gcc_assert.  Set gloog_error.
      	(graphite_copy_stmts_from_block): Update call to rename_uses.
      	(copy_bb_and_scalar_dependences): Update call to
      	graphite_copy_stmts_from_block.
      	* sese.h (copy_bb_and_scalar_dependences): Update declaration.
      
      	* gfortran.dg/graphite/id-pr47691.f: New.
      
      From-SVN: r176836
      Sebastian Pop committed
  25. 22 Dec, 2010 1 commit
  26. 16 Dec, 2010 1 commit
  27. 01 Dec, 2010 1 commit
    • Postpone the rewrite out of SSA to the end of the translation to polyhedral representation. · efa21390
      2010-11-22  Sebastian Pop  <sebastian.pop@amd.com>
      
      	PR middle-end/45297
      	* graphite-poly.c (new_poly_bb): Returns a poly_bb_p.  Do not take
      	the reduction bool in parameter.  Clear PBB_IS_REDUCTION.  Set GBB_PBB.
      	* graphite-poly.h (new_poly_bb): Update declaration.
      	(gbb_from_bb): Moved here...
      	(pbb_from_bb): New.
      	* graphite-sese-to-poly.c (var_used_in_not_loop_header_phi_node):
      	Removed.
      	(graphite_stmt_p): Removed.
      	(try_generate_gimple_bb): Returns a gimple_bb_p.  Do not pass in
      	sbitmap reductions.  Always build a gimple_bb_p.  Do not call
      	new_poly_bb.
      	(build_scop_bbs_1): Do not pass in sbitmap reductions.
      	(build_scop_bbs): Same.
      	(gbb_from_bb): ... from here.
      	(add_conditions_to_constraints): Moved up.
      	(analyze_drs): New.
      	(build_scop_drs): Call analyze_drs.  Remove all the PBBs that do
      	not contain data references.
      	(new_pbb_from_pbb): New.
      	(insert_out_of_ssa_copy_on_edge): Call new_pbb_from_pbb after a
      	block is split.
      	(rewrite_close_phi_out_of_ssa): Update call to
      	insert_out_of_ssa_copy_on_edge.
      	(rewrite_reductions_out_of_ssa): Now static.
      	(rewrite_cross_bb_scalar_deps_out_of_ssa): Same.
      	(split_pbb): New.
      	(split_reduction_stmt): Call split_pbb.
      	(translate_scalar_reduction_to_array): Pass in the scop, do not
      	pass in the sbitmap reductions.
      	(rewrite_commutative_reductions_out_of_ssa_close_phi): Same.
      	(rewrite_commutative_reductions_out_of_ssa_loop): Same.
      	(rewrite_commutative_reductions_out_of_ssa): Same.
      	(build_poly_scop): Call build_scop_bbs,
      	rewrite_commutative_reductions_out_of_ssa,
      	rewrite_reductions_out_of_ssa, and
      	rewrite_cross_bb_scalar_deps_out_of_ssa.  Move build_scop_drs
      	before scop_to_lst.
      	* graphite-sese-to-poly.h (rewrite_commutative_reductions_out_of_ssa):
      	Removed declaration.
      	(rewrite_reductions_out_of_ssa): Same.
      	(rewrite_cross_bb_scalar_deps_out_of_ssa): Same.
      	(build_scop_bbs): Same.
      	* graphite.c (graphite_transform_loops): Do not initialize reductions.
      	Do not call build_scop_bbs,
      	rewrite_commutative_reductions_out_of_ssa,
      	rewrite_reductions_out_of_ssa, and
      	rewrite_cross_bb_scalar_deps_out_of_ssa.
      	* sese.h (struct gimple_bb): Add field pbb.
      	(GBB_PBB): New.
      
      	* gcc.dg/graphite/pr45297.c: New.
      
      From-SVN: r167348
      Sebastian Pop committed
  28. 30 Sep, 2010 2 commits
    • Fix miscompilation of 416.gamess. · 8ba78f92
      2010-09-23  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* sese.h (scev_analyzable_p): Return false for real or floating
      	point.  Only handle INTEGRAL_TYPE_P and POINTER_TYPE_P.
      
      From-SVN: r164812
      Sebastian Pop committed
    • CDI_POST_DOMINATORS are not used in Graphite. · 61c6973f
      2010-09-20  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* graphite-clast-to-gimple.c (graphite_verify): Remove call to
      	verify_dominators for CDI_POST_DOMINATORS.
      	* sese.h: Remove comment about CDI_POST_DOMINATORS.
      	(recompute_all_dominators): Remove call to free_dominance_info
      	for CDI_POST_DOMINATORS.  Remove call to calculate_dominance_info
      	for CDI_POST_DOMINATORS.
      
      From-SVN: r164807
      Sebastian Pop committed
  29. 11 Aug, 2010 4 commits
    • Scevs could be expressions without chrecs and still be scev_analyzable_p. · f36fc876
      2010-07-15  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* sese.h (scev_analyzable_p): Scevs could be expressions without
      	chrecs and still be scev_analyzable_p.
      
      From-SVN: r163144
      Sebastian Pop committed
    • Remove expand_scalar_variables_ hack. · 2e286fd2
      2010-07-15  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* graphite-clast-to-gimple.c (debug_clast_name_index): Removed.
      	(debug_clast_name_indexes_1): Removed.
      	(debug_clast_name_indexes): Removed.
      	(pbb_to_depth_to_oldiv): Removed.
      	(build_iv_mapping): Replace the use of rename_map with iv_map.
      	(translate_clast_user): Remove uses of rename_map.  Allocate and
      	free iv_map.
      	(translate_clast_for_loop): Remove uses of rename_map.
      	(translate_clast_for): Same.
      	(translate_clast_guard): Same.
      	(translate_clast): Same.
      	(gloog): Same.
      	* graphite-clast-to-gimple.h (debug_clast_name_indexes): Removed.
      	* graphite-sese-to-poly.c (scev_analyzable_p): Moved...
      	* sese.c (set_rename): Now static.
      	(rename_variables_in_stmt): Removed.
      	(rename_uses): New.
      	(is_parameter): Removed.
      	(is_iv): Removed.
      	(expand_scalar_variables_call): Removed.
      	(expand_scalar_variables_ssa_name): Removed.
      	(expand_scalar_variables_expr): Removed.
      	(expand_scalar_variables_stmt): Removed.
      	(expand_scalar_variables): Removed.
      	(rename_variables): Removed.
      	(remove_condition): Removed.
      	(get_true_edge_from_guard_bb): Removed.
      	(get_false_edge_from_guard_bb): Removed.
      	(struct igp): Removed.
      	(default_before_guard): Removed.
      	(convert_for_phi_arg): Removed.
      	(add_guard_exit_phis): Removed.
      	(insert_guard_phis): Removed.
      	(graphite_copy_stmts_from_block): Now also uses iv_map and a
      	region.  Do not copy conditions.  Do not copy induction variables.
      	Call rename_uses.
      	(copy_bb_and_scalar_dependences): Allocate a local rename_map for
      	the translated statement.  Use the iv_map for the induction
      	variable renaming.
      	* sese.h (copy_bb_and_scalar_dependences): Update declaration.
      	(set_rename): Removed declaration.
      	(scev_analyzable_p): ...here.
      	* tree-chrec.c (chrec_apply_map): New.
      	* tree-chrec.h (chrec_apply_map): Declared.
      
      From-SVN: r163139
      Sebastian Pop committed
    • Remove rename_nb_iterations and rename_sese_parameters · 14d0e129
      2010-06-12  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* graphite-clast-to-gimple.c (gloog): Do not pass scops in parameter.
      	Remove calls to rename_nb_iterations and rename_sese_parameters.
      	* graphite-clast-to-gimple.h (gloog): Update declaration.
      	* graphite.c (graphite_transform_loops): Update call to gloog.
      	* sese.c (rename_variables_in_expr): Removed.
      	(rename_nb_iterations): Removed.
      	(rename_sese_parameters): Removed.
      	* sese.h (rename_nb_iterations): Removed.
      	(rename_sese_parameters): Removed.
      
      From-SVN: r163119
      Sebastian Pop committed
    • Also rewrite out of SSA scalar dependences going outside the SCoP region. · d1ba0721
      2010-06-12  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* graphite-clast-to-gimple.c (gloog): Remove call to
      	sese_adjust_liveout_phis.
      	* graphite-sese-to-poly.c (scev_analyzable_p): When scev returns an
      	SSA_NAME, allow it to be handled by rewrite_cross_bb_scalar_deps.
      	(rewrite_cross_bb_scalar_deps): Handle GIMPLE_PHI nodes: call
      	rewrite_phi_out_of_ssa.
      	* sese.c (get_vdef_before_sese): Removed.
      	(sese_adjust_vphi): Removed.
      	(sese_adjust_liveout_phis): Removed.
      	* sese.h (sese_adjust_liveout_phis): Removed.
      
      From-SVN: r163118
      Sebastian Pop committed