aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-prefetch.cc
diff options
context:
space:
mode:
authorFilip Kastl <fkastl@suse.cz>2025-07-17 13:29:50 +0200
committerFilip Kastl <fkastl@suse.cz>2025-07-17 13:46:50 +0200
commitbb110e974e58d667991b9757f44822b58f160435 (patch)
tree858bc23556bff36a54f2dbb9053a4d7c523c838e /gcc/tree-ssa-loop-prefetch.cc
parentb5ffc8e75a81bab7ee7554483447c27be438464e (diff)
downloadgcc-bb110e974e58d667991b9757f44822b58f160435.zip
gcc-bb110e974e58d667991b9757f44822b58f160435.tar.gz
gcc-bb110e974e58d667991b9757f44822b58f160435.tar.bz2
tree-ssa-structalias: Put solver into its own file
This patch cuts out the points-to solver from tree-ssa-structalias.cc and places it into a new file pta-andersen.cc. It is the first part of my effort to split tree-ssa-structalias.cc into smaller parts. I had to give external linkage to some static functions and variables. I put those in the new header files tree-ssa-structalias.h and pta-andersen.h. Those header files are meant as an internal interface between parts of the points-to analyzer. Some functions and variables already had external linkage and were declared in tree-ssa-alias.h. I considered moving the declarations to tree-ssa-structalias.h but decided to leave them as is. I see those functions and variables as an external interface -- facing outwards to the rest of the compiler. For the internal interface, I made a new namespace "pointer_analysis". I didn't want to clutter the global namespace and possibly run into ODR problems. I wanted to encapsulate the constraint graph within the solver. To achieve that, I had to make some changes beyond just moving things around. They were only very small changes, though: - Add delete_graph() which gets called at the end of solve_constraints() - Problem: The solver assigns representatives to variables (union-find). To then get the solution for variable v, one has to look up the representative of v. The information needed to look up the representative is part of the graph. - Solution: Let the solver output an array that maps variables to their representatives and let this array outlive the graph (array var_rep). - Constructing the array means doing find() for every variable. That should amortize to O(size of the union-find structure). So this won't hurt the asymptotic time complexity. - We replace all calls to find(var) in tree-ssa-structalias.cc with just an array lookup var_rep[var]. - predbitmap_obstack gets initialized in init_graph(). gcc/ChangeLog: * Makefile.in: Add pta-andersen.o. * tree-ssa-structalias.cc (create_variable_info_for): Just move around. (unify_nodes): Move to pta-andersen.cc. (struct constraint): Move to tree-ssa-structalias.h. (EXECUTE_IF_IN_NONNULL_BITMAP): Move to pta-andersen.cc. (struct variable_info): Move to tree-ssa-structalias.h. (struct constraint_stats): Move to tree-ssa-structalias.h. (first_vi_for_offset): External linkage, move to namespace pointer_analysis. (first_or_preceding_vi_for_offset): External linkage, move to namespace pointer_analysis. (dump_constraint): External linkage, move to namespace pointer_analysis. (debug_constraint): External linkage, move to namespace pointer_analysis. (dump_constraints): External linkage, move to namespace pointer_analysis. (debug_constraints): External linkage, move to namespace pointer_analysis. (lookup_vi_for_tree): Move around inside tree-ssa-structalias.cc. (type_can_have_subvars): Move around inside tree-ssa-structalias.cc. (make_param_constraints): Move around inside tree-ssa-structalias.cc. (dump_solution_for_var): External linkage, move to namespace pointer_analysis. find (...) -> var_rep[...]. (get_varinfo): Move to tree-ssa-structalias.h. (debug_solution_for_var): External linkage, move to namespace pointer_analysis. (vi_next): Move to tree-ssa-structalias.h. (dump_sa_stats): External linkage, move to namespace pointer_analysis. (new_var_info): Just move around. (dump_sa_points_to_info): External linkage, move to namespace pointer_analysis. (debug_sa_points_to_info): External linkage, move to namespace pointer_analysis. (get_call_vi): Just move around. (dump_varinfo): External linkage, move to namespace pointer_analysis. (lookup_call_use_vi): Just move around. (lookup_call_clobber_vi): Just move around. (get_call_use_vi): Just move around. (get_call_clobber_vi): Just move around. (enum constraint_expr_type): Move to tree-ssa-structalias.h. (struct constraint_expr): Move to tree-ssa-structalias.h. (UNKNOWN_OFFSET): Move to tree-ssa-structalias.h. (get_constraint_for_1): Just move around. (get_constraint_for): Just move around. (get_constraint_for_rhs): Just move around. (do_deref): Just move around. (constraint_pool): Just move around. (struct constraint_graph): Move to pta-andersen.h. (FIRST_REF_NODE): Move to pta-andersen.cc. (LAST_REF_NODE): Move to pta-andersen.cc. (find): Move to pta-andersen.cc. (unite): Move to pta-andersen.cc. (new_constraint): Just move around. (debug_constraint_graph): External linkage, move to namespace pointer_analysis. (debug_varinfo): External linkage, move to namespace pointer_analysis. (debug_varmap): External linkage, move to namespace pointer_analysis. (dump_constraint_graph): External linkage, move to namespace pointer_analysis. (constraint_expr_equal): Move to pta-andersen.cc. (constraint_expr_less): Move to pta-andersen.cc. (constraint_less): Move to pta-andersen.cc. (constraint_equal): Move to pta-andersen.cc. (constraint_vec_find): Move to pta-andersen.cc. (constraint_set_union): Move to pta-andersen.cc. (solution_set_expand): Move to pta-andersen.cc. (set_union_with_increment): Move to pta-andersen.cc. (insert_into_complex): Move to pta-andersen.cc. (merge_node_constraints): Move to pta-andersen.cc. (clear_edges_for_node): Move to pta-andersen.cc. (merge_graph_nodes): Move to pta-andersen.cc. (add_implicit_graph_edge): Move to pta-andersen.cc. (add_pred_graph_edge): Move to pta-andersen.cc. (add_graph_edge): Move to pta-andersen.cc. (init_graph): Move to pta-andersen.cc. Initialize predbitmap_obstack here. (build_pred_graph): Move to pta-andersen.cc. (build_succ_graph): Move to pta-andersen.cc. (class scc_info): Move to pta-andersen.cc. (scc_visit): Move to pta-andersen.cc. (solve_add_graph_edge): Move to pta-andersen.cc. (do_sd_constraint): Move to pta-andersen.cc. (do_ds_constraint): Move to pta-andersen.cc. (do_complex_constraint): Move to pta-andersen.cc. (scc_info::scc_info): Move to pta-andersen.cc. (scc_info::~scc_info): Move to pta-andersen.cc. (find_indirect_cycles): Move to pta-andersen.cc. (topo_visit): Move to pta-andersen.cc. (compute_topo_order): Move to pta-andersen.cc. (struct equiv_class_hasher): Move to pta-andersen.cc. (equiv_class_hasher::hash): Move to pta-andersen.cc. (equiv_class_hasher::equal): Move to pta-andersen.cc. (equiv_class_lookup_or_add): Move to pta-andersen.cc. (condense_visit): Move to pta-andersen.cc. (label_visit): Move to pta-andersen.cc. (dump_pred_graph): External linkage, move to namespace pointer_analysis. (dump_varmap): External linkage, move to namespace pointer_analysis. (perform_var_substitution): Move to pta-andersen.cc. (free_var_substitution_info): Move to pta-andersen.cc. (find_equivalent_node): Move to pta-andersen.cc. (unite_pointer_equivalences): Move to pta-andersen.cc. (move_complex_constraints): Move to pta-andersen.cc. (rewrite_constraints): Move to pta-andersen.cc. (eliminate_indirect_cycles): Move to pta-andersen.cc. (solve_graph): Move to pta-andersen.cc. (set_uids_in_ptset): find (...) -> var_rep[...]. (find_what_var_points_to): find (...) -> var_rep[...]. (init_alias_vars): Don't initialize predbitmap_obstack here. (remove_preds_and_fake_succs): Move to pta-andersen.cc. (solve_constraints): Move to pta-andersen.cc. Call delete_graph() at the end. (delete_points_to_sets): Don't delete graph here. Delete var_rep here. (visit_loadstore): find (...) -> var_rep[...]. (compute_dependence_clique): find (...) -> var_rep[...]. (ipa_pta_execute): find (...) -> var_rep[...]. * pta-andersen.cc: New file. * pta-andersen.h: New file. * tree-ssa-structalias.h: New file. Signed-off-by: Filip Kastl <fkastl@suse.cz>
Diffstat (limited to 'gcc/tree-ssa-loop-prefetch.cc')
0 files changed, 0 insertions, 0 deletions