GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "rtl.h"
#include "df.h"
#include "rtl-iter.h"
#include "rtl-ssa.h"
#include "cfgcleanup.h"
#include "tree-pass.h"
#include "ordered-hash-map.h"
#include "tree-dfa.h"
#include "fold-const.h"
#include "tree-hash-traits.h"
#include "print-tree.h"
#include "pair-fusion.h"
Data Structures | |
struct | lfs_fields |
struct | access_record |
struct | access_group |
struct | alt_base |
struct | alias_walker |
struct | pair_fusion_bb_info |
struct | store_change_builder |
struct | store_change_builder::change |
class | def_walker< reverse > |
class | store_walker< reverse, InsnPredicate > |
class | load_walker< reverse > |
Macros | |
#define | INCLUDE_ALGORITHM |
#define | INCLUDE_FUNCTIONAL |
#define | INCLUDE_LIST |
#define | INCLUDE_TYPE_TRAITS |
#define | INCLUDE_ARRAY |
Typedefs | |
using | insn_list_t = std::list<insn_info *> |
Functions | |
static rtx | drop_writeback (rtx mem) |
static rtx | pair_mem_strip_offset (rtx mem, poly_int64 *offset) |
static bool | any_pre_modify_p (rtx x) |
static bool | any_post_modify_p (rtx x) |
static int | encode_lfs (lfs_fields fields) |
static lfs_fields | decode_lfs (int lfs) |
static insn_info * | latest_hazard_before (insn_info *insn, rtx *ignore, insn_info *ignore_insn=nullptr) |
static insn_info * | first_hazard_after (insn_info *insn, rtx *ignore) |
static bool | ranges_overlap_p (const insn_range_info &r1, const insn_range_info &r2) |
static insn_range_info | get_def_range (def_info *def) |
static insn_range_info | def_downwards_move_range (def_info *def) |
static insn_range_info | def_upwards_move_range (def_info *def) |
static insn_info * | try_repurpose_store (insn_info *first, insn_info *second, const insn_range_info &move_range) |
static rtx | gen_tombstone (void) |
static rtx | filter_notes (rtx note, rtx result, bool *eh_region, rtx *fr_expr) |
static rtx | combine_reg_notes (insn_info *i1, insn_info *i2, bool load_p) |
static rtx | extract_writebacks (bool load_p, rtx pats[2], int changed) |
static void | reset_debug_use (use_info *use) |
static void | fixup_debug_use (obstack_watermark &attempt, use_info *use, def_info *def, rtx base, poly_int64 wb_offset) |
static void | fixup_debug_uses_trailing_add (obstack_watermark &attempt, insn_info *pair_dst, insn_info *trailing_add, rtx writeback_effect) |
static void | fixup_debug_uses (obstack_watermark &attempt, insn_info *insns[2], rtx orig_rtl[2], insn_info *pair_dst, insn_info *trailing_add, bool load_p, int writeback, rtx writeback_effect, unsigned base_regno) |
static bool | store_modifies_mem_p (rtx mem, insn_info *store_insn, int &budget) |
static bool | load_modified_by_store_p (insn_info *load, insn_info *store, int &budget) |
static void | dump_insn_list (FILE *f, const insn_list_t &l) |
DEBUG_FUNCTION void | debug (const insn_list_t &l) |
#define INCLUDE_ALGORITHM |
#define INCLUDE_ARRAY |
#define INCLUDE_FUNCTIONAL |
#define INCLUDE_LIST |
#define INCLUDE_TYPE_TRAITS |
using insn_list_t = std::list<insn_info *> |
References GET_CODE.
Referenced by extract_writebacks(), and pair_fusion_bb_info::track_access().
References GET_CODE.
Referenced by extract_writebacks().
References alloc_reg_note(), copy_rtx(), filter_notes(), gen_rtvec(), i1, i2, NULL_RTX, PATTERN(), REG_NOTES, and RTX_FRAME_RELATED_P.
Referenced by pair_fusion_bb_info::fuse_pair().
DEBUG_FUNCTION void debug | ( | const insn_list_t & | l | ) |
References dump_insn_list().
|
static |
Referenced by pair_fusion_bb_info::transform_for_base().
|
static |
References dyn_cast(), get_def_range(), and use::insn.
Referenced by try_repurpose_store().
|
static |
References dyn_cast(), and use::insn.
Referenced by try_repurpose_store().
References change_address(), gcc_unreachable, GET_CODE, GET_MODE, GET_MODE_SIZE(), plus_constant(), side_effects_p(), and XEXP.
Referenced by pair_fusion_bb_info::fuse_pair().
|
static |
Referenced by debug(), and pair_fusion_bb_info::merge_pairs().
|
static |
References exact_log2(), fields, and gcc_checking_assert.
Referenced by pair_fusion_bb_info::track_access(), and pair_fusion_bb_info::track_via_mem_expr().
References any_post_modify_p(), any_pre_modify_p(), change_address(), changed, gcc_assert, gcc_checking_assert, GET_CODE, GET_MODE, GET_RTX_CLASS, i, known_eq, NULL_RTX, offset, pair_mem_strip_offset(), plus_constant(), REG_P, RTX_AUTOINC, rtx_equal_p(), and XEXP.
Referenced by pair_fusion_bb_info::fuse_pair().
References alloc_reg_note(), copy_rtx(), gcc_assert, gcc_unreachable, REG_NOTE_KIND, and XEXP.
Referenced by combine_reg_notes().
|
static |
References dyn_cast(), gcc_checking_assert, HARD_REGISTER_NUM_P, use::insn, PATTERN(), and refers_to_regno_p().
Referenced by pair_fusion_bb_info::try_fuse_pair().
|
static |
References insn_propagation::apply_to_pattern(), as_a(), crtl, dump_file, insn_propagation::failure_reason, gcc_checking_assert, GET_MODE, use::insn, INSN_VAR_LOCATION_LOC, plus_constant(), pp_formatted_text(), pp_string(), print_dec(), REG_P, REGNO, reset_debug_use(), and def::uses.
Referenced by fixup_debug_uses(), and fixup_debug_uses_trailing_add().
|
static |
References as_a(), crtl, defs, dump_file, dyn_cast(), fixup_debug_use(), fixup_debug_uses_trailing_add(), gcc_assert, gcc_checking_assert, GET_CODE, GET_RTX_CLASS, i, use::insn, insns, iterate_safely(), NULL_RTX, offset, pair_mem_strip_offset(), REG_P, REGNO, reset_debug_use(), RTX_AUTOINC, safe_dyn_cast(), and XEXP.
Referenced by pair_fusion_bb_info::fuse_pair().
|
static |
References defs, fixup_debug_use(), gcc_checking_assert, use::insn, iterate_safely(), rtx_equal_p(), safe_dyn_cast(), SET_DEST, SET_SRC, and strip_offset().
Referenced by fixup_debug_uses(), and pair_fusion::try_promote_writeback().
|
static |
References gen_rtx_MEM().
Referenced by pair_fusion_bb_info::fuse_pair().
|
static |
References last.
Referenced by def_downwards_move_range().
|
static |
References cfun, dyn_cast(), find_reg_note(), gcc_checking_assert, HARD_REGISTER_NUM_P, use::insn, NULL_RTX, PATTERN(), and refers_to_regno_p().
Referenced by pair_fusion::find_trailing_add(), and pair_fusion_bb_info::try_fuse_pair().
|
static |
References CALL_P, dump_file, FOR_EACH_SUBRTX_VAR, gcc_checking_assert, MEM_P, memory_modified_in_insn_p(), and PATTERN().
Referenced by load_walker< reverse >::alias_conflict_p().
|
static |
References gcc_checking_assert, GET_CODE, GET_MODE, GET_MODE_SIZE(), offset, REG_P, rtx_equal_p(), strip_offset(), and XEXP.
Referenced by extract_writebacks(), fixup_debug_uses(), pair_fusion::get_viable_bases(), and pair_fusion_bb_info::track_access().
|
static |
Referenced by do_structure_copy(), and try_repurpose_store().
|
static |
References crtl, gen_rtx_UNKNOWN_VAR_LOC, use::insn, and INSN_VAR_LOCATION_LOC.
Referenced by fixup_debug_use(), and fixup_debug_uses().
References dump_file, memory_modified_in_insn_p(), and print_simple_rtl().
Referenced by store_walker< reverse, InsnPredicate >::alias_conflict_p().
|
static |
References def_downwards_move_range(), def_upwards_move_range(), defs, and ranges_overlap_p().
Referenced by pair_fusion_bb_info::fuse_pair().