osprey/ipa/main/optimize/ipo_inline.cxx File Reference

#include <stdint.h>
#include <alloca.h>
#include "assert.h"
#include "defs.h"
#include "config_ipa.h"
#include "lwn_util.h"
#include "targ_sim.h"
#include "wn_simp.h"
#include "wn_tree_util.h"
#include "ipa_cg.h"
#include "ipa_inline.h"
#include "ipo_clone.h"
#include "ipo_parent.h"
#include "ipl_summarize.h"
#include "ipo_tlog_utils.h"
#include "ipa_option.h"
#include "dwarf_DST_producer.h"
#include "clone_DST_utils.h"
#include "ipaa.h"
#include "ipo_inline.h"

Include dependency graph for ipo_inline.cxx:

Go to the source code of this file.

Data Types

module  SCOPE_CONTEXT

Defines

#define __STDC_LIMIT_MACROS
#define BASETYPE   TY_mtype
#define ST_ADDR_SAVED   ST_addr_saved
#define ST_ADDR_PASSED   ST_addr_passed
#define SET_ST_ADDR_SAVED   Set_ST_addr_saved
#define SET_ST_ADDR_PASSED   Set_ST_addr_passed
#define RESET_ST_ADDR_SAVED   Clear_ST_addr_saved
#define RESET_ST_ADDR_PASSED   Clear_ST_addr_passed

Typedefs

typedef pair< ST *, BOOLBARRIER_ST

Functions/Subroutines

static BOOL Subscripts_All_0 (const WN *actual, INT n)
static BOOL Equal_dims (ARB_HANDLE formal_arb, ARB_HANDLE actual_arb)
static INT Dim_size (ARB_HANDLE arb)
static BOOL Dim_size_is_1 (ARB_HANDLE arb)
static BOOL Dim_size_unknown (ARB_HANDLE arb)
static PARM_ITER Lookup_Parm (PARM_ATTR_VEC &vec, const ST *st)
static BOOL Formal_Is_Array (const ST *st)
static RESHAPE_METHOD Do_Linearize (WN *actual, ST *formal_st)
static BOOL IPA_Do_Linearization (IPA_NODE *callee_node, WN *call, SCOPE *caller_scope)
BOOL Can_Inline_Call (IPA_NODE *caller, IPA_NODE *callee, const IPA_EDGE *edge)
static STFind_Return_Registers (TYPE_ID type, PREG_NUM *rreg1, PREG_NUM *rreg2)
static WNCreate_array (WN *base)
static INT Get_orig_param_position (INT curpos, const VALUE_DYN_ARRAY *cprop_annot)
static STGet_actual_st_if_passed (WN *actual)
static void Set_Tables (IPA_NODE *node)
static BOOL ST_might_be_modified (const ST *st)
static void Update_Caller_MP_Pragmas (ST *s, WN *wn)
static pair< WN *, ST * > Create_Copy_Expr_For_Ptr (WN *expr, WN *call, BOOL is_mp)
static pair< WN *, ST * > Create_Copy_Expr (WN *expr, WN *call, BOOL is_mp)
static void Process_Actual (WN *actual, WN *copy_in_block, IPO_INLINE &inliner)
static void Copy_Subscript_Expressions (IPO_INLINE_AUX &aux, IPO_INLINE &inliner)
static void Update_formal_dref (WN *actual, IPA_NODE *caller)
static TYPE_ID Get_element_mtype (WN *actual)
static TY_IDX Get_element_ty (WN *actual)
void Init_inline ()
static void Propagate_Flags (IPA_NODE *caller_node, IPA_NODE *callee_node)
static void Recognize_Caller_MP (IPA_NODE *caller, IPA_NODE *callee)
static void Insert_Block_Around (WN *parent, WN *wn, WN *before, WN *after)
static void Insert_Labels (WN *Call, LABEL_IDX return_label, LABEL_IDX entry_label, WN *inlined_block)
static void Save_And_Restore_Stack (WN *call)
static void Replace_Return_By_Goto (TREE_ITER &iter, LABEL_IDX ret_label)
static vector< TY_IDX,
mempool_allocator< TY_IDX > > 
processed_types (Malloc_Mem_Pool)
static BOOL ty_processed (TY_IDX ty)
static void fix_var_dim_array (TY_IDX ty, IPO_SYMTAB *symtab)
static void Process_Pregs (WN *w, const RETURN_PREG &rp)
static BOOL has_array_reference (WN *wn)
static BOOL Unaliased_Actuals_Useful (WN *wn)
static STGet_Array_ST (WN *wn)
static BOOL Is_Scalar_Formal_Ref (const ST *st)
static void Disambiguate_Aliased_Actuals (PARM_ATTR_VEC &parm_attr, PU &pu)
static void Generate_Barriers (WN *parent, WN *call, IPO_INLINE_AUX &aux)
static void Array_reshape_eq (WN *actual, TREE_ITER &iter)
static void Array_reshape_gt (WN *actual, TREE_ITER &iter)
static void Array_reshape_lt (WN *actual, TREE_ITER &iter)
static WNSimplify_Tree (WN *block)
static WNCopy_Scalar (ST *dest, WN_OFFSET offset, TYPE_ID desc, WN *src)
static WNCopy_Struct (ST *dest, WN *src, UINT64 size)
static void Process_Direct_Replacement (PARM_ITER parm)
static BOOL constant_array_base (WN *base)
static void Copy_Non_Constant_Parm (WN *parm, WN *copy_in_block, PARAMETER_ATTRIBUTES &p, IPO_INLINE &inliner)
static void Compute_Pass_Method (PARM_ITER p, IPO_INLINE_AUX &aux, IPO_INLINE &inliner)
static STget_formal (SCOPE *callee_scope, WN *formal)

Variables

static INT initial_initv_tab_size
MEM_POOL Ipo_mem_pool
WN_MAP Parent_Map
WN_MAP_TABcaller_map_tab
WN_MAP_TABcallee_map_tab


Define Documentation

#define __STDC_LIMIT_MACROS

Definition at line 46 of file ipo_inline.cxx.

#define BASETYPE   TY_mtype

Definition at line 98 of file ipo_inline.cxx.

#define RESET_ST_ADDR_PASSED   Clear_ST_addr_passed

Definition at line 104 of file ipo_inline.cxx.

#define RESET_ST_ADDR_SAVED   Clear_ST_addr_saved

Definition at line 103 of file ipo_inline.cxx.

#define SET_ST_ADDR_PASSED   Set_ST_addr_passed

Definition at line 102 of file ipo_inline.cxx.

#define SET_ST_ADDR_SAVED   Set_ST_addr_saved

Definition at line 101 of file ipo_inline.cxx.

#define ST_ADDR_PASSED   ST_addr_passed

#define ST_ADDR_SAVED   ST_addr_saved


Typedef Documentation

typedef pair<ST*, BOOL> BARRIER_ST [static]

Definition at line 2453 of file ipo_inline.cxx.


Function Documentation

static void Array_reshape_eq ( WN actual,
TREE_ITER iter 
) [static]

static void Array_reshape_gt ( WN actual,
TREE_ITER iter 
) [static]

static void Array_reshape_lt ( WN actual,
TREE_ITER iter 
) [static]

BOOL Can_Inline_Call ( IPA_NODE caller,
IPA_NODE callee,
const IPA_EDGE edge 
)

static void Compute_Pass_Method ( PARM_ITER  p,
IPO_INLINE_AUX aux,
IPO_INLINE inliner 
) [static]

static BOOL constant_array_base ( WN base  )  [inline, static]

static void Copy_Non_Constant_Parm ( WN parm,
WN copy_in_block,
PARAMETER_ATTRIBUTES p,
IPO_INLINE inliner 
) [static]

static WN* Copy_Scalar ( ST dest,
WN_OFFSET  offset,
TYPE_ID  desc,
WN src 
) [inline, static]

static WN* Copy_Struct ( ST dest,
WN src,
UINT64  size 
) [static]

static void Copy_Subscript_Expressions ( IPO_INLINE_AUX aux,
IPO_INLINE inliner 
) [static]

static WN* Create_array ( WN base  )  [static]

static pair<WN*, ST*> Create_Copy_Expr ( WN expr,
WN call,
BOOL  is_mp 
) [static]

static pair<WN*, ST*> Create_Copy_Expr_For_Ptr ( WN expr,
WN call,
BOOL  is_mp 
) [static]

static INT Dim_size ( ARB_HANDLE  arb  )  [inline, static]

Definition at line 152 of file ipo_inline.cxx.

References abs, ARB_const_lbnd, ARB_const_ubnd, ARB_lbnd_val, ARB_ubnd_val, and Is_True.

Referenced by Create_array(), and Dim_size_is_1().

static BOOL Dim_size_is_1 ( ARB_HANDLE  arb  )  [inline, static]

Definition at line 163 of file ipo_inline.cxx.

References ARB_const_lbnd, ARB_const_ubnd, and Dim_size().

Referenced by Dim_size_unknown().

static BOOL Dim_size_unknown ( ARB_HANDLE  arb  )  [static]

Definition at line 174 of file ipo_inline.cxx.

References ARB_const_ubnd, ARB_ubnd_var(), Dim_size_is_1(), and ST_IDX_ZERO.

Referenced by Do_Linearize().

static void Disambiguate_Aliased_Actuals ( PARM_ATTR_VEC parm_attr,
PU pu 
) [static]

static RESHAPE_METHOD Do_Linearize ( WN actual,
ST formal_st 
) [static]

static BOOL Equal_dims ( ARB_HANDLE  formal_arb,
ARB_HANDLE  actual_arb 
) [static]

Definition at line 128 of file ipo_inline.cxx.

References abs, ARB_const_lbnd, ARB_const_ubnd, ARB_lbnd_val, ARB_ubnd_val, FALSE, and INT64.

Referenced by Do_Linearize().

static ST* Find_Return_Registers ( TYPE_ID  type,
PREG_NUM rreg1,
PREG_NUM rreg2 
) [static]

static void fix_var_dim_array ( TY_IDX  ty,
IPO_SYMTAB symtab 
) [static]

static BOOL Formal_Is_Array ( const ST st  )  [static]

static void Generate_Barriers ( WN parent,
WN call,
IPO_INLINE_AUX aux 
) [static]

static ST* Get_actual_st_if_passed ( WN actual  )  [static]

static ST* Get_Array_ST ( WN wn  )  [static]

static TYPE_ID Get_element_mtype ( WN actual  )  [static]

static TY_IDX Get_element_ty ( WN actual  )  [static]

static ST* get_formal ( SCOPE callee_scope,
WN formal 
) [static]

Definition at line 3440 of file ipo_inline.cxx.

References WN_st().

Referenced by IPO_INLINE::Process_Formals().

static INT Get_orig_param_position ( INT  curpos,
const VALUE_DYN_ARRAY cprop_annot 
) [static]

Definition at line 633 of file ipo_inline.cxx.

References i, and INT.

Referenced by IPO_INLINE::SubstituteFormal(), and Update_formal_dref().

static BOOL has_array_reference ( WN wn  )  [static]

void Init_inline (  ) 

Definition at line 1420 of file ipo_inline.cxx.

References Init_Operator_To_Opcode_Table().

Referenced by Perform_inlining(), and Perform_Transformation().

static void Insert_Block_Around ( WN parent,
WN wn,
WN before,
WN after 
) [static]

static void Insert_Labels ( WN Call,
LABEL_IDX  return_label,
LABEL_IDX  entry_label,
WN inlined_block 
) [static]

static BOOL IPA_Do_Linearization ( IPA_NODE callee_node,
WN call,
SCOPE caller_scope 
) [static]

static BOOL Is_Scalar_Formal_Ref ( const ST st  )  [inline, static]

static PARM_ITER Lookup_Parm ( PARM_ATTR_VEC vec,
const ST st 
) [static]

Definition at line 182 of file ipo_inline.cxx.

References _ffestd_stmt_::end, and first.

Referenced by IPO_INLINE::Process_Formal_ST().

static void Process_Actual ( WN actual,
WN copy_in_block,
IPO_INLINE inliner 
) [static]

static void Process_Direct_Replacement ( PARM_ITER  parm  )  [static]

static void Process_Pregs ( WN w,
const RETURN_PREG rp 
) [static]

static vector<TY_IDX, mempool_allocator<TY_IDX> > processed_types ( Malloc_Mem_Pool   )  [static]

Referenced by fix_var_dim_array(), and ty_processed().

static void Propagate_Flags ( IPA_NODE caller_node,
IPA_NODE callee_node 
) [static]

static void Recognize_Caller_MP ( IPA_NODE caller,
IPA_NODE callee 
) [static]

static void Replace_Return_By_Goto ( TREE_ITER iter,
LABEL_IDX  ret_label 
) [inline, static]

Definition at line 1714 of file ipo_inline.cxx.

References WN_TREE_ITER_base< WHIRL >::Replace(), and WN_CreateGoto.

Referenced by IPO_INLINE::Process_Op_Code().

static void Save_And_Restore_Stack ( WN call  )  [static]

static void Set_Tables ( IPA_NODE node  )  [static]

static WN* Simplify_Tree ( WN block  )  [static]

Definition at line 3008 of file ipo_inline.cxx.

References Parent_Map, WN_Simplify_Tree(), and WN_SimpParentMap.

Referenced by IPO_INLINE::Walk_and_Update_Callee().

static BOOL ST_might_be_modified ( const ST st  )  [static]

static BOOL Subscripts_All_0 ( const WN actual,
INT  n 
) [static]

Definition at line 111 of file ipo_inline.cxx.

References FALSE, i, index(), INT, OPR_INTCONST, TRUE, WN_array_index, WN_const_val(), WN_num_dim, and WN_operator().

Referenced by Do_Linearize().

static BOOL ty_processed ( TY_IDX  ty  )  [static]

Definition at line 1940 of file ipo_inline.cxx.

References FALSE, i, processed_types(), TRUE, and TY_IDX_index().

Referenced by fix_var_dim_array().

static BOOL Unaliased_Actuals_Useful ( WN wn  )  [static]

static void Update_Caller_MP_Pragmas ( ST s,
WN wn 
) [static]

static void Update_formal_dref ( WN actual,
IPA_NODE caller 
) [static]


Variable Documentation

Definition at line 1431 of file ipo_inline.cxx.

Definition at line 1430 of file ipo_inline.cxx.

Definition at line 74 of file ipo_inline.cxx.

Referenced by IPO_INLINE::Process(), and IPO_INLINE::Process_OPR_REGION().

Definition at line 76 of file ipo_inline.cxx.

Definition at line 77 of file ipo_inline.cxx.


Generated on Wed Apr 8 15:10:47 2009 for Open64 by  doxygen 1.5.6