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.

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)
tree create_mem_ref (gimple_stmt_iterator *, tree, struct affine_tree_combination *, tree, tree, tree, bool)
void copy_ref_info (tree, tree)
tree maybe_fold_tmr (tree)

Function Documentation

rtx addr_for_mem_ref ( struct mem_address addr,
addr_space_t  as,
bool  really_expand 
)

Header file for memory address lowering and mode selection. Copyright (C) 2013 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/.

Returns address for TARGET_MEM_REF with parameters given by ADDR in address space AS. If REALLY_EXPAND is false, just make fake registers instead of really expanding the operands, and perform the expansion in-place by using one of the "templates".

Reuse the templates for addresses, so that we do not waste memory.   

Otherwise really expand the expressions.

rtx addr_for_mem_ref ( tree  exp,
addr_space_t  as,
bool  really_expand 
)
void copy_ref_info ( tree  ,
tree   
)
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.

 The expression is too complicated.  Try making it simpler.   
     Move the multiplication to index.   
     Add the symbol to base, eventually forcing it to register.   
     Add index to base.   
     Try adding offset to base.   
 Verify that the address is in the simplest possible shape
 (only a register).  If we cannot create such a memory reference,
 something is really wrong.   

References mem_address::base, fold_build_pointer_plus, force_gimple_operand_gsi_1(), gcc_assert, GSI_SAME_STMT, mem_address::index, is_gimple_mem_ref_addr(), NULL_TREE, sizetype, TREE_TYPE, and useless_type_conversion_p().

void get_address_description ( tree  ,
struct mem_address  
)
tree maybe_fold_tmr ( tree  )
tree tree_mem_ref_addr ( tree  ,
tree   
)