GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | modify_pair |
struct | gcse_note_stores_info |
Typedefs | |
typedef vec< rtx_insn * > | vec_rtx_heap |
typedef vec< modify_pair > | vec_modify_pair_heap |
Functions | |
void | compute_transp (const_rtx, int, sbitmap *, bitmap, bitmap, vec< modify_pair > *) |
void | record_last_mem_set_info_common (rtx_insn *, vec< rtx_insn * > *, vec< modify_pair > *, bitmap, bitmap) |
typedef vec<modify_pair> vec_modify_pair_heap |
typedef vec<rtx_insn *> vec_rtx_heap |
Structures and prototypes common across the normal GCSE implementation and the post-reload implementation. Copyright (C) 1997-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/>.
|
extern |
For each block, compute whether X is transparent. X is either an expression or an assignment [though we don't care which, for this context an assignment is treated as an expression]. For each block where an element of X is modified, reset the INDX bit in BMAP. BLOCKS_WITH_CALLS indicates which blocks contain CALL_INSNs which kill memory. MODIFY_MEM_LIST_SET indicates which blocks have memory stores which might kill a particular memory location. CANON_MODIFY_MEM_LIST is the canonicalized list of memory locations modified for each block.
References bitmap_clear_bit(), blocks_with_calls, canon_modify_mem_list, canon_rtx(), canon_true_dependence(), CASE_CONST_ANY, compute_transp(), DF_REF_BB, DF_REF_NEXT_REG, DF_REG_DEF_CHAIN, EXECUTE_IF_AND_COMPL_IN_BITMAP, EXECUTE_IF_SET_IN_BITMAP, FOR_EACH_VEC_ELT_REVERSE, get_addr(), GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM_READONLY_P, modify_mem_list_set, REGNO, XEXP, XVECEXP, and XVECLEN.
Referenced by compute_expr_transp(), compute_local_properties(), and compute_transp().
|
extern |
Record memory modification information for INSN. We do not actually care about the memory location(s) that are set, or even how they are set (consider a CALL_INSN). We merely need to record which insns modify memory.
References bitmap_set_bit, BLOCK_FOR_INSN(), blocks_with_calls, CALL_P, canon_list_insert(), canon_modify_mem_list, basic_block_def::index, gcse_note_stores_info::insn, modify_mem_list, modify_mem_list_set, and note_stores().
Referenced by record_last_mem_set_info(), and record_last_mem_set_info().