GCC Middle and Back End API Reference
tree-ssa-address.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  mem_address
 

Functions

rtx addr_for_mem_ref (struct mem_address *, addr_space_t, bool)
 
rtx addr_for_mem_ref (tree exp, addr_space_t as, bool really_expand)
 
void get_address_description (tree, struct mem_address *)
 
tree tree_mem_ref_addr (tree, tree)
 
bool valid_mem_ref_p (machine_mode, addr_space_t, struct mem_address *, code_helper=ERROR_MARK)
 
void move_fixed_address_to_symbol (struct mem_address *, class aff_tree *)
 
tree create_mem_ref (gimple_stmt_iterator *, tree, class aff_tree *, tree, tree, tree, bool)
 
void copy_ref_info (tree, tree)
 
tree maybe_fold_tmr (tree)
 
unsigned int preferred_mem_scale_factor (tree base, machine_mode mem_mode, bool speed)
 

Function Documentation

◆ addr_for_mem_ref() [1/2]

◆ addr_for_mem_ref() [2/2]

rtx addr_for_mem_ref ( tree exp,
addr_space_t as,
bool really_expand )
extern
implement addr_for_mem_ref() directly from a tree, which avoids exporting
the mem_address structure.   

References addr_for_mem_ref(), exp(), and get_address_description().

◆ copy_ref_info()

◆ create_mem_ref()

tree create_mem_ref ( gimple_stmt_iterator * gsi,
tree type,
aff_tree * addr,
tree alias_ptr_type,
tree iv_cand,
tree base_hint,
bool speed )
Creates and returns a TARGET_MEM_REF for address ADDR.  If necessary
computations are emitted in front of GSI.  TYPE is the mode
of created memory reference. IV_CAND is the selected iv candidate in ADDR,
and BASE_HINT is non NULL if IV_CAND comes from a base address
object.   

References add_offset_to_base(), addr_to_parts(), mem_address::base, create_mem_ref_raw(), fold_build2, fold_build_pointer_plus, force_gimple_operand_gsi(), force_gimple_operand_gsi_1(), gcc_assert, gcc_unreachable, gimplify_mem_ref_parts(), GSI_SAME_STMT, mem_address::index, integer_onep(), integer_zerop(), is_gimple_mem_ref_addr(), is_gimple_val(), mem_ref_valid_without_offset_p(), NULL_TREE, mem_address::offset, sizetype, mem_address::step, mem_address::symbol, TREE_TYPE, unshare_expr(), and useless_type_conversion_p().

Referenced by rewrite_use_address().

◆ get_address_description()

void get_address_description ( tree op,
struct mem_address * addr )
extern

◆ maybe_fold_tmr()

◆ move_fixed_address_to_symbol()

void move_fixed_address_to_symbol ( struct mem_address * parts,
aff_tree * addr )
extern
If ADDR contains an address of object that is a link time constant,
move it to PARTS->symbol.   

References aff_combination_remove_elt(), aff_comb_elt::coef, aff_tree::elts, fixed_address_object_p(), i, aff_tree::n, NULL_TREE, mem_address::symbol, TREE_CODE, TREE_OPERAND, and aff_comb_elt::val.

Referenced by addr_to_parts(), and get_address_cost().

◆ preferred_mem_scale_factor()

unsigned int preferred_mem_scale_factor ( tree base,
machine_mode mem_mode,
bool speed )
extern
Return the preferred index scale factor for accessing memory of mode
MEM_MODE in the address space of pointer BASE.  Assume that we're
optimizing for speed if SPEED is true and for size otherwise.   

References addr_for_mem_ref(), address_cost(), mem_address::base, GET_MODE_UNIT_SIZE, mem_address::index, integer_one_node, sizetype, mem_address::step, TREE_TYPE, TYPE_ADDR_SPACE, and wide_int_to_tree().

Referenced by add_iv_candidate_for_use().

◆ tree_mem_ref_addr()

◆ valid_mem_ref_p()

bool valid_mem_ref_p ( machine_mode mode,
addr_space_t as,
struct mem_address * addr,
code_helper ch )
extern
Returns true if a memory reference in MODE and with parameters given by
ADDR is valid on the current target.   

References addr_for_mem_ref(), and memory_address_addr_space_p().

Referenced by create_mem_ref_raw(), get_address_cost(), mem_ref_valid_without_offset_p(), and valid_mem_ref_cand_p().