GCC Middle and Back End API Reference
|
Go to the source code of this file.
Functions | |
struct edge_list * | pre_edge_lcm_avs (int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **) |
struct edge_list * | pre_edge_lcm (int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **) |
void | compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *) |
struct edge_list * | pre_edge_rev_lcm (int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **) |
void | compute_antinout_edge (sbitmap *, sbitmap *, sbitmap *, sbitmap *) |
void | compute_earliest (struct edge_list *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap *) |
|
extern |
Edge based lcm routines.
Compute expression anticipatability at entrance and exit of each block. This is done based on the flow graph, and not on the pred-succ lists. Other than that, its pretty much identical to compute_antinout.
References antloc, basic_block_def::aux, BASIC_BLOCK_FOR_FN, bitmap_clear(), bitmap_intersection_of_succs(), bitmap_or_and(), bitmap_vector_ones(), cfun, clear_aux_for_blocks(), clear_aux_for_edges(), ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, FOR_EACH_EDGE, free(), i, basic_block_def::index, inverted_rev_post_order_compute(), last_basic_block_for_fn, n_basic_blocks_for_fn, NULL, NUM_FIXED_BLOCKS, basic_block_def::preds, transp, and worklist.
Referenced by pre_edge_lcm_avs(), and pre_edge_rev_lcm().
Compute the AVIN and AVOUT vectors from the AVLOC and KILL vectors. Return the number of passes we performed to iterate to a solution.
References basic_block_def::aux, BASIC_BLOCK_FOR_FN, bitmap_clear(), bitmap_intersection_of_preds(), bitmap_ior_and_compl(), bitmap_vector_ones(), cfun, clear_aux_for_blocks(), clear_aux_for_edges(), ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, FOR_EACH_EDGE, free(), i, basic_block_def::index, kill, last_basic_block_for_fn, n_basic_blocks_for_fn, NULL, NUM_FIXED_BLOCKS, pre_and_rev_post_order_compute_fn(), basic_block_def::succs, and worklist.
Referenced by compute_cprop_data(), pre_edge_lcm_avs(), and pre_edge_rev_lcm().
|
extern |
Compute the earliest vector for edge based lcm.
References bitmap_and_compl(), bitmap_and_or(), bitmap_clear(), bitmap_copy(), bitmap_not(), cfun, ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, basic_block_def::index, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, kill, NUM_EDGES, and temp_bitmap.
Referenced by pre_edge_lcm_avs().
|
extern |
Wrapper to allocate avin/avout and call pre_edge_lcm_avs.
References antloc, cfun, edge_list, insert(), kill, last_basic_block_for_fn, pre_edge_lcm_avs(), sbitmap_vector_alloc(), sbitmap_vector_free(), and transp.
Referenced by compute_pre_data().
|
extern |
Generic partial redundancy elimination with lazy code motion header file. Copyright (C) 2014-2024 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Given local properties TRANSP, ANTLOC, AVLOC, KILL return the insert and delete vectors for edge based LCM and return the AVIN, AVOUT bitmap. map the insert vector to what edge an expression should be inserted on.
References antloc, bitmap_vector_clear(), cfun, compute_antinout_edge(), compute_available(), compute_earliest(), compute_insert_delete(), compute_laterin(), create_edge_list(), dump_bitmap_vector(), dump_file, edge_list, insert(), kill, last_basic_block_for_fn, NUM_EDGES, edge_list::num_edges, print_edge_list(), sbitmap_vector_alloc(), sbitmap_vector_free(), transp, and verify_edge_list().
Referenced by pre_edge_lcm().
|
extern |
Given local properties TRANSP, ST_AVLOC, ST_ANTLOC, KILL return the insert and delete vectors for edge based reverse LCM. Returns an edgelist which is used to map the insert vector to what edge an expression should be inserted on.
References bitmap_vector_clear(), cfun, compute_antinout_edge(), compute_available(), compute_farthest(), compute_nearerout(), compute_rev_insert_delete(), create_edge_list(), dump_bitmap_vector(), dump_file, edge_list, insert(), kill, last_basic_block_for_fn, NUM_EDGES, edge_list::num_edges, print_edge_list(), sbitmap_vector_alloc(), sbitmap_vector_free(), st_antloc, st_avloc, transp, and verify_edge_list().
Referenced by one_store_motion_pass().