OSDN Git Service

Fix PR42186.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog.graphite
index 82bafce..4d7b11d 100644 (file)
@@ -1,3 +1,414 @@
+2009-12-17  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42186
+       * testsuite/gfortran.dg/graphite/pr42186.f90: New.
+
+2009-12-17  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42205
+       * graphite-sese-to-poly.c (translate_scalar_reduction_to_array_for_stmt):
+       Insert the reduction copy in the same block as the phi node.
+       (follow_ssa_with_commutative_ops): Handle GIMPLE_NOPs.
+
+       * testsuite/gcc.dg/graphite/pr42205-1.c: New.
+       * testsuite/gcc.dg/graphite/pr42205-2.c: New.
+
+2009-12-17  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42221
+       * sese.c (expand_scalar_variables_expr): Follow the SSA links into
+       the array indexing of ADDR_EXPRs.
+
+       * testsuite/gcc.dg/graphite/pr42221.c: New.
+
+2009-12-17  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42178
+       PR middle-end/42334
+       * graphite-interchange.c (lst_try_interchange): Do not modify OUTER
+       index.  Call lst_interchange_select_inner only once.
+       (lst_interchange_select_inner): Update use of lst_try_interchange.
+       (lst_interchange_select_outer): Update.
+
+2009-12-15  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42178
+       PR middle-end/42334
+       * graphite-interchange.c (lst_try_interchange): Do not increment the
+       the OUTER index when there is no AFTER kernel.  Do not increment the
+       OUTER index for after processing the AFTER kernel.
+       (lst_interchange_select_inner): Call lst_try_interchange only on loops.
+       (lst_interchange_select_outer): Do not pass in a pointer to the OUTER
+       index.  Do not pass to lst_interchange_select_inner the OUTER index.
+       (scop_do_interchange): Update use of lst_interchange_select_outer.
+
+       * testsuite/gfortran.dg/graphite/graphite.exp
+       (DEFAULT_FLAGS_GRAPHITE_IDENTITY): Remove -fdump-tree-graphite-all.
+       * testsuite/gfortran.dg/graphite/interchange-1.f: Add comment.  Clean
+       the graphite dump file.
+       * testsuite/gfortran.dg/graphite/interchange-2.f: Same.
+       * testsuite/gfortran.dg/graphite/pr42334-1.f: New.
+
+2009-12-15  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42178
+       PR middle-end/42334
+       * graphite-interchange.c (lst_perfect_nestify): Reset to NULL the LSTs
+       that are empty.
+       (lst_do_interchange_1): Renamed lst_interchange_select_inner.
+       (lst_try_interchange): Reimplemented.
+       (lst_interchange_select_inner): Same.
+       (lst_do_interchange): Renamed lst_interchange_select_outer.
+       Reimplemented.
+       (scop_do_interchange): Update use of lst_interchange_select_outer.
+
+       * testsuite/g++.dg/graphite/pr42130.C: Add -fgraphite-identity.
+       * testsuite/gcc.dg/graphite/block-0.c: Un-XFAILed.
+       * testsuite/gcc.dg/graphite/pr42211.c: New.
+       * testsuite/gfortran.dg/graphite/pr42334.f90: New.
+
+2009-12-14  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42181
+       * graphite-scop-detection.c (graphite_can_represent_scev): Handle more
+       carefully PLUS_EXPR, MINUS_EXPR, and MULT_EXPR.
+
+       * testsuite/gfortran.dg/graphite/pr42181.f90: New.
+
+2009-12-12  Sebastian Pop  <sebpop@gmail.com>
+
+       PR middle-end/42284
+       * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Call
+       insert_out_of_ssa_copy_on_edge for anything else than SSA_NAMEs.
+       (detect_commutative_reduction_arg): Simplified.
+       (detect_commutative_reduction): Early return when the argument of
+       the close phi is not of an SSA_NAME.
+
+       * testsuite/gcc.dg/graphite/pr42284.c: New.
+
+2009-12-11  Alexander Monakov  <amonakov@ispras.ru>
+
+       * dbgcnt.def (graphite_scop): New counter.
+       * graphite.c: Include dbgcnt.h
+       (graphite_transform_loops): Use new counter to limit transformations.
+
+2009-12-08  Sebastian Pop  <sebpop@gmail.com>
+
+       PR middle-end/42285
+       * graphite-scop-detection.c (graphite_can_represent_init): Also
+       handle more complex MULT_EXPRs containing parameters by recursion
+       on the structure.
+
+       * testsuite/gfortran.dg/graphite/pr42285.f90: New.
+
+2009-12-01  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       * testsuite/g++.dg/graphite/pr42130.C: Fix type.
+
+2009-11-29  Alexander Monakov <amonakov@gcc.gnu.org>
+
+       * testsuite/g++.dg/graphite/pr42130.C: Correct testcase.
+
+2009-11-24  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       * graphite-clast-to-gimple.c (try_mark_loop_parallel,
+       graphite_create_new_loop_guard, translate_clast_for): Fix comments.
+
+2009-11-23  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       PR middle-end/42130
+       * graphite-clast-to-gimple.c (graphite_create_new_loop_guard,
+       translate_clast_for_loop): New.
+       (translate_clast_for): Add a condition around the loop, to do not
+       execute loops with zero iterations.
+       * testsuite/g++.dg/graphite/pr42130.C: New.
+       * testsuite/gcc.dg/graphite/pr35356-2.c: Adapt.
+
+2009-11-23  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       * graphite-clast-to-gimple.c (try_mark_loop_parallel): New.
+       (translate_clast_for, translate_clast_guard, translate_clast, gloog):
+       Remove context_loop and level.
+
+2009-11-23  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       * graphite-clast-to-gimple.c (translate_clast_user,
+       translate_clast_for, translate_clast_guard): Simplify and move common
+       elements to translate_clast().
+       (translate_clast): Simplify and get common elements.
+
+2009-11-23  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       * graphite-clast-to-gimple.c (translate_clast_user,
+       translate_clast_for, translate_clast_guard): Split out of
+       translate_clast.
+
+2009-11-21  Tobias Grosser  <grosser@fim.uni-passau.de>
+
+       * graphite-clast-to-gimple.c (clast_name_index, new_clast_name_index,
+       clast_name_to_index, save_clast_name_index, debug_clast_name_index,
+       debug_clast_name_indexes_1, debug_clast_name_indexes,
+       clast_name_index_elt_info, eq_clast_name_indexes): Moved from sese.h.
+       (clast_name_to_gcc, clast_to_gcc_expression,
+       clast_to_gcc_expression_red, gcc_type_for_clast_expr,
+       gcc_type_for_clast_eq, graphite_translate_clast_equation,
+       graphite_create_guard_cond_expr, graphite_create_new_loop,
+       translate_clast): Add params_index.
+       (initialize_cloog_names): Create parameter strings from scratch, do
+       not reference other strings.
+       (create_params_index): New.
+       (gloog): Initialize params_index.
+       * graphite-scop-detection (free_scops_1): Removed.
+       (limit_scops): Use normal free_scops.
+       * graphite-sese-to-poly.c (save_var_names): Removed.
+       (parameter_index_in_region): Do not initialize SESE_PARAM_NAMES
+       and SESE_PARAMS_INDEX.
+       * sese.c (new_sese, free_sese): Dito.
+       * sese.h (struct sese): Remove params_index, params_names.
+       (SESE_PARAMS_INDEX, SESE_PARAMS_NAMES): Removed.
+
+2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
+
+       Revert the following patch from 2009-09-14:
+       * graphite-blocking.c: Fix order of includes: tree-chrec.h, then
+       tree-scalar-evolution.h, and then tree-data-ref.h.
+       * graphite-clast-to-gimple.c: Same.
+       * graphite-dependences.c: Same.
+       * graphite-interchange.c: Same.
+       * graphite-poly.c: Same.
+       * graphite-scop-detection.c: Same.
+       * graphite-sese-to-poly.c: Same.
+       * graphite.c: Same.
+       * lambda-code.c: Same.
+       * matrix-reorg.c: Same.
+       * tree-data-ref.c: Same.
+       * tree-if-conv.c: Same.
+       * tree-loop-distribu: Same.: Same.
+       * tree-loop-linear.c: Same.
+       * tree-parloops.c: Same.
+       * tree-predcom.c: Same.
+       * tree-vect-patterns.c: Same.
+
+2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
+
+       Revert patch from 2009-09-14.
+       * tree-ssa-loop.c (gate_graphite_transforms): Re-enable Graphite
+       passes at -O1 and below.
+
+2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/40281
+       * testsuite/gcc.dg/graphite/pr40281.c: New.
+
+       * tree-scalar-evolution.c (instantiate_scev_poly): Base and stride
+       evolutions should not variate in inner loops.
+
+2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/42050
+       * testsuite/gfortran.dg/graphite/pr42050.f90: New.
+
+2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-interchange.c (memory_strides_in_loop_depth): New.
+       (pbb_interchange_profitable_p): Call memory_strides_in_loop_depth.
+
+2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-blocking.c (scop_do_block): New.
+       * graphite-poly.c (apply_poly_transforms): Call scop_do_block.
+       * graphite-poly.h (scop_do_block): Declared.
+
+2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-blocking.c (pbb_strip_mine_profitable_p): The parameter
+       depth is the loop nesting depth in the LST.  Call psct_dynamic_dim
+       to transform depth into the time_depth before calling
+       pbb_number_of_iterations_at_time.
+       (lst_do_strip_mine): Use a scalar variable instead of recomputing
+       lst_depth.
+
+2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>
+
+       Reverted the patch for "scattering permutations" from 2009-10-28.
+
+       * graphite-poly.c (print_permutation): New.
+       (debug_permutation): New.
+       (new_poly_bb): Initialize PBB_PERMUTATION.
+       (free_poly_bb): Free PBB_PERMUTATION.
+       * graphite-poly.h (pbb_permutation_elt_p): Declared.
+       (struct pbb_permutation_elt): New.
+       (PBB_PERMUTATION_ELT_STRIDE): New.
+       (PBB_PERMUTATION_ELT_STRIDED_P): New.
+       (PBB_PERMUTATION_ELT_TIME_DIMENSION): New.
+       (new_pbb_permutation_elt): New.
+       (pbb_permutation_elt_free): New.
+       (struct poly_bb): Add field permutation.
+       (PBB_PERMUTATION): New.
+       (print_permutation): Declared.
+       (debug_permutation): Declared.
+
+2009-11-04  Konrad Trifunovic  <konrad.trifunovic@inria.fr>
+
+        * graphite-interchange.c (build_partial_difference): New.
+        (memory_stride_in_loop): Refactored the computation of
+        equality constraints into build_partial_difference function.
+        Added support for debugging stride computations.
+
+2009-11-03  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (gloog): Free if_region,
+       if_region->true_region, and if_region->region.
+       * sese.c (if_region_set_false_region): Free if_region->false_region.
+       (create_if_region_on_edge): Do not use GGC_NEW.
+       (move_sese_in_condition): Remove useless initialization.
+
+2009-11-03  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-interchange.c (lst_perfect_nestify): Pass 3 parameters
+       for the loops created by the loop distribution.  Do not modify the
+       input LSTs.
+       (lst_try_interchange_loops): Same.  Use a temporary LST for the
+       transformed schedule.  Call lst_update_scattering before data
+       dependence analysis.
+       (lst_try_interchange): Pass an extra parameter INDEX.
+       (lst_do_interchange_1): New.
+       (lst_do_interchange): Call lst_do_interchange_1.
+       (scop_do_interchange): Call lst_update_scattering.
+       * graphite-poly.c (apply_poly_transforms): Do not call
+       lst_update_scattering.
+       * graphite-poly.h (lst_pred): New.
+       (lst_succ): New.
+       (lst_find_first_pbb): Return NULL when not found.
+       (lst_empty_p): New.
+       (lst_insert_in_sequence): Allow LST1 to be NULL.
+       (lst_replace): New.
+       (lst_substitute_3): New.
+       * gcc.dg/graphite/interchange-1.c: XFail.
+       * gcc.dg/graphite/interchange-8.c: XFail.
+       * gcc.dg/graphite/interchange-11.c: XFail.
+
+2009-10-30  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-interchange.c (lst_perfectly_nested_p): New.
+       (lst_perfect_nestify): New.
+       (lst_try_interchange_loops): Call store_lst_schedule,
+       lst_perfectly_nested_p, lst_perfect_nestify and restore_lst_schedule.
+       (scop_do_interchange): Avoid redundant legality test.
+       Call lst_do_interchange on a copy of SCOP_TRANSFORMED_SCHEDULE.
+       * graphite-poly.c (apply_poly_transforms): Call lst_update_scattering.
+       * graphite-poly.h (psct_static_dim): New.
+       (lst_dewey_number_at_depth): New.
+       (lst_find_pbb): Restructured.
+       (lst_find_first_pbb): Restructured.
+       (lst_find_last_pbb): New.
+       (lst_contains_p): New.
+       (lst_contains_pbb): New.
+       (lst_create_nest): New.
+       (lst_remove_from_sequence): New.
+       (pbb_update_scattering): New.
+       (lst_update_scattering_under): New.
+       (lst_update_scattering_seq): New.
+       (lst_update_scattering): New.
+       (lst_insert_in_sequence): New.
+       (lst_distribute_lst): New.
+       (lst_remove_all_before_including_pbb): New.
+       (lst_remove_all_before_excluding_pbb): New.
+
+2009-10-30  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * tree-ssa-loop-niter.c (finite_loop_p): Do not call twice
+       get_loop_exit_edges.
+
+2009-10-30  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-poly.c (pbb_remove_duplicate_pdrs): Free collapsed.
+
+2009-10-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+
+       * graphite-poly.c (print_permutation): New.
+       (debug_permutation): New.
+       (new_poly_bb): Initialize PBB_PERMUTATION.
+       (free_poly_bb): Free PBB_PERMUTATION.
+       * graphite-poly.h (pbb_permutation_elt_p): Declared.
+       (struct pbb_permutation_elt): New.
+       (PBB_PERMUTATION_ELT_STRIDE): New.
+       (PBB_PERMUTATION_ELT_STRIDED_P): New.
+       (PBB_PERMUTATION_ELT_TIME_DIMENSION): New.
+       (new_pbb_permutation_elt): New.
+       (pbb_permutation_elt_free): New.
+       (struct poly_bb): Add field permutation.
+       (PBB_PERMUTATION): New.
+       (print_permutation): Declared.
+       (debug_permutation): Declared.
+
+2009-10-26  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (gloog): Do not call
+       sese_reset_aux_in_loops.
+       * graphite-sese-to-poly.c (build_loop_iteration_domains): Pass an
+       extra argument for domains.  Do not use loop->aux.
+       (build_scop_iteration_domain): Initialize and free domains, pass it
+       to build_loop_iteration_domains and extract the information from
+       domains.  Do not use loop->aux.
+       * sese.c (sese_reset_aux_in_loops): Removed.
+       * sese.h (sese_reset_aux_in_loops): Removed.
+
+2009-10-26  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (find_pbb_via_hash): Moved up.
+       (dependency_in_loop_p): Same.
+       (translate_clast): Do not use loop->aux.  Initialize
+       loop->can_be_parallel.
+       (mark_loops_parallel): Removed.
+       * graphite-clast-to-gimple.h (mark_loops_parallel): Removed.
+       * graphite.c (free_aux_in_new_loops): Removed.
+       (graphite_finalize): Do not call free_aux_in_new_loops.
+       (graphite_transform_loops): Do not call mark_loops_parallel.
+
+2009-10-26  Li Feng  <nemokingdom@gmail.com>
+
+       * graphite-clast-to-gimple.c (get_stmtfor_depth): Removed.
+       (translate_clast): Pass an extra parameter LEVEL.
+       Call get_scattering_level.
+       * graphite-clast-to-gimple.h (get_scattering_level): New.
+
+2009-10-22  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * cfgloop.c (alloc_loop): Initialize loop->single_iv.
+       * cfgloop.h (struct loop): New field single_iv.
+
+       * graphite-clast-to-gimple.c (pbb_to_depth_to_oldiv): Do not use
+       loop->aux anymore: use loop->single_iv.
+       (graphite_loop_normal_form): Moved...
+       (build_graphite_loop_normal_form): Removed.
+       (gloog): Do not call build_graphite_loop_normal_form.
+       (free_aux_in_new_loops): Moved...
+       (mark_loops_parallel): Restructure.
+       * graphite-clast-to-gimple.h (free_aux_in_new_loops): Do not declare.
+       * graphite-sese-to-poly.c (graphite_loop_normal_form): ...here.
+       (scop_canonicalize_loops): New.
+       (build_poly_scop): Call scop_canonicalize_loops.
+       * graphite.c (free_aux_in_new_loops): ...here.
+
+2009-10-22  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * g++.dg/graphite/graphite.exp: Add the same rules as in
+       gcc.dg/graphite/graphite.exp.
+
+2009-10-22  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * g++.dg/graphite/id-1.C: New.
+
+2009-10-22  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-sese-to-poly.c (create_zero_dim_array): Pass an extra
+       argument base_name.
+       (rewrite_close_phi_out_of_ssa): Update use of create_zero_dim_array.
+       (rewrite_phi_out_of_ssa): Same.
+       (rewrite_cross_bb_scalar_deps): Same.
+       (translate_scalar_reduction_to_array): Same.
+
 2009-10-22  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-sese-to-poly.c (build_scop_drs): Disable call to