osprey/be/cg/eh_region.cxx File Reference

#include <algorithm>
#include <vector>
#include "libelf/libelf.h"
#include "dwarf_stuff.h"
#include "defs.h"
#include "errors.h"
#include "tracing.h"
#include "mempool.h"
#include "symtab.h"
#include "wn.h"
#include "irbdata.h"
#include "strtab.h"
#include "stblock.h"
#include "config.h"
#include "config_opt.h"
#include "xstats.h"
#include "eh_region.h"
#include "data_layout.h"
#include "region_util.h"
#include "region_main.h"
#include "bb.h"
#include "whirl2ops.h"
#include "label_util.h"
#include "pro_encode_nm.h"
#include <map>
#include <set>

Include dependency graph for eh_region.cxx:

Go to the source code of this file.

Data Types

module  RID_POST_ITER
module  RID_PARENT_ITER
type  IS_EH_RID
type  EH_RANGE
module  EH_RANGE_LIST
module  EH_RANGE_LIST_PARENT_ITER
type  ADD_EH_RANGE
type  SET_PARENT
type  IS_SIB_RANGE
type  HAS_NO_CALL_OR_HAS_NULL_OR_UNREACHABLE_LABEL
type  SET_ADJUSTMENT
type  CLEAR_USED
type  SET_ADJUSTMENT_TO_PARENT_ADJUSTMENT
type  ADJUST_PARENT
type  COMPARE_RANGES
type  IS_CLEANUP_RANGE
type  FIX_MASK_PARENT
type  CHANGE_MASK_OR_GUARD_TO_CLEANUP
type  cmpst
type  type_filter_entry
type  sort_on_filter
type  SET_NOT_USED

Defines

#define SHORT_OFFSETS   0
#define LONG_OFFSETS   1
#define HEADER_VERSION   1
#define CASE_KIND(n)   case n:return #n
#define CASE_KIND(n)   case n: return #n

Typedefs

typedef std::map< ST_IDX, int > TF_MAP
typedef std::map< int, ST_IDXFT_MAP
typedef std::set< ST_IDXEH_PTS

Enumerations

enum  eh_range_kind {
  ehk_try_block, ehk_exc_spec, ehk_cleanup, ehk_mask,
  ehk_guard, ehk_last
}

Functions/Subroutines

bool operator== (const RID_POST_ITER &x, const RID_POST_ITER &y)
bool operator== (const RID_PARENT_ITER &x, const RID_PARENT_ITER &y)
static eh_range_kind Range_Kind (RID *rid)
bool operator== (const EH_RANGE_LIST_PARENT_ITER &x, const EH_RANGE_LIST_PARENT_ITER &y)
void EH_Generate_Range_List (WN *pu)
static LABEL_IDX Duplicate_LABEL (LABEL_IDX oldi)
bool EH_Has_Landing_Pad (EH_RANGE *range)
void EH_Set_Start_Label (EH_RANGE *p)
void EH_Set_End_Label (EH_RANGE *p)
void EH_Set_Has_Call (EH_RANGE *p)
void EH_Prune_Range_List (void)
void reorder_range_list ()
static void fix_mask_ranges (void)
STEH_Get_PU_Range_ST (void)
BOOL Use_Long_EH_Range_Offsets (void)
static STST_For_Range_Table (WN *wn)
INT16 parent_offset (INT32 i)
static void EH_Build_PIC_Type (ST_IDX idx)
static int Get_EH_Filter_By_Type (ST_IDX idx, TF_MAP &tfmap)
static ST_IDX Get_EH_ST_By_Filter (int filter, FT_MAP &ftmap)
static int Convert_TF_Map_To_FT_Map (TF_MAP &src, FT_MAP &dst)
static INITV_IDX Get_TF_Map_and_EH_Spec_List (PU &pu, TF_MAP &tfmap)
static void flatten_regions (void)
static INITOCreate_Type_Filter_Map (void)
static int sizeof_signed_leb128 (int value)
static const char * Get_INITV_kind (INITVKIND kind)
static const char * Get_LABEL_Kind (LABEL_KIND kind)
static void EH_Dump_INITV (INITV_IDX inv, FILE *fp, int step)
void EH_Dump_INITOs (WN *pu, FILE *fp)
static void Print_EH_Range (EH_RANGE &range, FILE *fp, const int i)
void EH_Print_Range_List (void)
void Print_PU_EH_Entry (PU &pu, ST *pu_st, FILE *fp)
static void INITV_Init_Integer_2 (INITV_IDX inv, TYPE_ID mtype, INT64 val, UINT16 repeat)
static void Check_Initv (INITV_IDX idx, FILE *fp)
INITOEH_Get_PU_Range_INITO (bool bSetNull)
static void Create_INITO_For_Range_Table (ST *st, ST *pu)
void EH_Dump_LSDA (FILE *fp)
void EH_Write_Range_Table (WN *wn)
void print_label (LABEL_IDX label)

Variables

static EH_RANGE_LIST range_list
static STeh_pu_range_st
TF_MAP tfmap
FT_MAP ftmap
map< ST_IDX, int, cmpsttype_filter_map
static INITOeh_pu_range_inito = NULL


Define Documentation

#define CASE_KIND ( n   )     case n: return #n

#define CASE_KIND ( n   )     case n:return #n

Referenced by Get_INITV_kind(), and Get_LABEL_Kind().

#define HEADER_VERSION   1

Definition at line 931 of file eh_region.cxx.

Referenced by Create_INITO_For_Range_Table().

#define LONG_OFFSETS   1

Definition at line 930 of file eh_region.cxx.

Referenced by Create_INITO_For_Range_Table().

#define SHORT_OFFSETS   0

Definition at line 929 of file eh_region.cxx.

Referenced by Create_INITO_For_Range_Table().


Typedef Documentation

typedef std::set< ST_IDX > EH_PTS

Definition at line 954 of file eh_region.cxx.

typedef std::map< int, ST_IDX > FT_MAP

Definition at line 953 of file eh_region.cxx.

typedef std::map< ST_IDX, int > TF_MAP

Definition at line 952 of file eh_region.cxx.


Enumeration Type Documentation

Enumerator:
ehk_try_block 
ehk_exc_spec 
ehk_cleanup 
ehk_mask 
ehk_guard 
ehk_last 

Definition at line 280 of file eh_region.cxx.


Function Documentation

static void Check_Initv ( INITV_IDX  idx,
FILE fp 
) [static]

static int Convert_TF_Map_To_FT_Map ( TF_MAP src,
FT_MAP dst 
) [static]

Definition at line 1004 of file eh_region.cxx.

References filter(), and make_pair().

static void Create_INITO_For_Range_Table ( ST st,
ST pu 
) [static]

static INITO* Create_Type_Filter_Map ( void   )  [static]

static LABEL_IDX Duplicate_LABEL ( LABEL_IDX  oldi  )  [static]

static void EH_Build_PIC_Type ( ST_IDX  idx  )  [static]

void EH_Dump_INITOs ( WN pu,
FILE fp 
)

static void EH_Dump_INITV ( INITV_IDX  inv,
FILE fp,
int  step 
) [static]

void EH_Dump_LSDA ( FILE fp  ) 

void EH_Generate_Range_List ( WN pu  ) 

Definition at line 464 of file eh_region.cxx.

Referenced by Backend_Processing().

INITO* EH_Get_PU_Range_INITO ( bool  bSetNull  ) 

Definition at line 1479 of file eh_region.cxx.

References NULL, and ret.

Referenced by EH_Dump_LSDA(), and EMT_Emit_PU().

ST* EH_Get_PU_Range_ST ( void   ) 

Definition at line 869 of file eh_region.cxx.

Referenced by EH_Dump_LSDA(), and EMT_Emit_PU().

bool EH_Has_Landing_Pad ( EH_RANGE range  ) 

void EH_Print_Range_List ( void   ) 

Definition at line 1350 of file eh_region.cxx.

References fprintf(), Get_Trace(), i, INT32, Print_EH_Range(), EH_RANGE_LIST::size(), TFile, and TP_EH.

Referenced by CG_Generate_Code().

void EH_Prune_Range_List ( void   ) 

Definition at line 726 of file eh_region.cxx.

Referenced by CG_Generate_Code(), and Finalize_All_BBs().

void EH_Set_End_Label ( EH_RANGE p  ) 

Definition at line 597 of file eh_region.cxx.

Referenced by convert_stmt_list_to_OPs().

void EH_Set_Has_Call ( EH_RANGE p  ) 

Definition at line 621 of file eh_region.cxx.

Referenced by region_stack_eh_set_has_call().

void EH_Set_Start_Label ( EH_RANGE p  ) 

Definition at line 548 of file eh_region.cxx.

Referenced by convert_stmt_list_to_OPs().

void EH_Write_Range_Table ( WN wn  ) 

static void fix_mask_ranges ( void   )  [static]

static void flatten_regions ( void   )  [static]

static int Get_EH_Filter_By_Type ( ST_IDX  idx,
TF_MAP tfmap 
) [static]

Definition at line 987 of file eh_region.cxx.

Referenced by EH_Dump_LSDA().

static ST_IDX Get_EH_ST_By_Filter ( int  filter,
FT_MAP ftmap 
) [static]

Definition at line 995 of file eh_region.cxx.

Referenced by EH_Dump_LSDA().

static const char* Get_INITV_kind ( INITVKIND  kind  )  [static]

static const char* Get_LABEL_Kind ( LABEL_KIND  kind  )  [static]

static INITV_IDX Get_TF_Map_and_EH_Spec_List ( PU pu,
TF_MAP tfmap 
) [static]

static void INITV_Init_Integer_2 ( INITV_IDX  inv,
TYPE_ID  mtype,
INT64  val,
UINT16  repeat 
) [static]

bool operator== ( const EH_RANGE_LIST_PARENT_ITER x,
const EH_RANGE_LIST_PARENT_ITER y 
) [inline]

Definition at line 393 of file eh_region.cxx.

References EH_RANGE_LIST_PARENT_ITER::iter.

bool operator== ( const RID_PARENT_ITER x,
const RID_PARENT_ITER y 
)

Definition at line 256 of file eh_region.cxx.

References RID_PARENT_ITER::p.

bool operator== ( const RID_POST_ITER x,
const RID_POST_ITER y 
) [inline]

Definition at line 221 of file eh_region.cxx.

References RID_POST_ITER::own.

INT16 parent_offset ( INT32  i  )  [inline]

Definition at line 933 of file eh_region.cxx.

References INT16, and NULL.

Referenced by Create_INITO_For_Range_Table().

static void Print_EH_Range ( EH_RANGE range,
FILE fp,
const int  i 
) [static]

void print_label ( LABEL_IDX  label  ) 

Definition at line 2234 of file eh_region.cxx.

References Label_Table.

Referenced by print_branch().

void Print_PU_EH_Entry ( PU pu,
ST pu_st,
FILE fp 
)

static eh_range_kind Range_Kind ( RID rid  )  [static]

void reorder_range_list (  ) 

static int sizeof_signed_leb128 ( int  value  )  [static]

static ST* ST_For_Range_Table ( WN wn  )  [static]

BOOL Use_Long_EH_Range_Offsets ( void   )  [inline]


Variable Documentation

INITO* eh_pu_range_inito = NULL [static]

Definition at line 1476 of file eh_region.cxx.

ST* eh_pu_range_st [static]

Definition at line 867 of file eh_region.cxx.

Definition at line 957 of file eh_region.cxx.

Definition at line 410 of file eh_region.cxx.

Definition at line 956 of file eh_region.cxx.

Definition at line 1136 of file eh_region.cxx.


Generated on Wed Apr 8 14:26:01 2009 for Open64 by  doxygen 1.5.6