#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>

Go to the source code of this file.
Referenced by Get_INITV_kind(), and Get_LABEL_Kind().
| #define HEADER_VERSION 1 |
| #define LONG_OFFSETS 1 |
| #define SHORT_OFFSETS 0 |
Definition at line 954 of file eh_region.cxx.
Definition at line 953 of file eh_region.cxx.
Definition at line 952 of file eh_region.cxx.
| enum eh_range_kind |
Definition at line 280 of file eh_region.cxx.
Definition at line 1465 of file eh_region.cxx.
References FmtAssert, fprintf(), INITV_blk(), INITV_kind(), INITV_next(), INITV_tc_val(), INITVKIND_BLOCK, INITVKIND_UNK, and INITVKIND_VAL.
Definition at line 2018 of file eh_region.cxx.
References Append_INITV(), HEADER_VERSION, i, INITO_IDX_ZERO, INITO_st(), INITV_IDX_ZERO, INITV_Init_Block(), INITV_Init_Integer(), INITV_Init_Symdiff(), INITV_Init_Symoff(), INT32, LONG_OFFSETS, MTYPE_I2, New_INITO(), New_INITV(), parent_offset(), SHORT_OFFSETS, EH_RANGE_LIST::size(), and Use_Long_EH_Range_Offsets().
Referenced by EH_Write_Range_Table().
Definition at line 1154 of file eh_region.cxx.
References filter(), FmtAssert, Get_Current_PU, i, idx, INITO_st(), Inito_Table, INITO_val(), INITV_blk(), INITV_kind(), INITV_next(), INITV_tc_val(), INITVKIND_ZERO, PU_misc_info(), SCLASS_EH_REGION_SUPP, ST_name, ST_sclass, and strcmp().
Definition at line 517 of file eh_region.cxx.
References CURRENT_SYMTAB, lab, LABEL_kind(), LABEL_name, Label_Table, New_LABEL(), Save_Str2(), Set_LABEL_kind, and Set_LABEL_name_idx().
Referenced by EH_Set_Start_Label().
Definition at line 961 of file eh_region.cxx.
References Assign_ST_To_Named_Section(), CLASS_VAR, EXPORT_HIDDEN, GLOBAL_SYMTAB, INITV_Init_Symoff(), MTYPE_TO_TY_array, MTYPE_U8, New_INITO(), New_INITV(), New_ST(), New_ST_ATTR(), pname, Save_Str2(), SCLASS_DGLOBAL, Set_ST_is_initialized, Set_ST_is_weak_symbol, ST_ATTR_Init(), ST_ATTR_SECTION_NAME, ST_ATTR_section_name(), ST_Init(), ST_name, ST_st_idx, and St_Table.
Referenced by Get_TF_Map_and_EH_Spec_List().
Definition at line 1285 of file eh_region.cxx.
References CURRENT_SYMTAB, EH_Dump_INITV(), FOREACH_INITO, fprintf(), i, INITO_st(), INT, SCLASS_EH_REGION, SCLASS_EH_REGION_SUPP, ST_is_not_used, ST_name, ST::storage_class, and INITO::val.
Referenced by Backend_Processing().
Definition at line 1250 of file eh_region.cxx.
References fprintf(), Get_INITV_kind(), Get_LABEL_Kind(), i, INITV_blk(), INITV_kind(), INITV_lab(), INITV_next(), INITV_tc_val(), INITVKIND_BLOCK, INITVKIND_LABEL, INITVKIND_ONE, INITVKIND_VAL, INITVKIND_ZERO, LABEL::kind, lab, LABEL_name, Label_Table, and sym.
Referenced by EH_Dump_INITOs().
Definition at line 2075 of file eh_region.cxx.
References EH_Get_PU_Range_INITO(), EH_Get_PU_Range_ST(), FmtAssert, fprintf(), Get_Current_PU_ST, Get_EH_Filter_By_Type(), Get_EH_ST_By_Filter(), i, INITO_st(), INITO_val(), INITV_blk(), INITV_kind(), INITV_next(), INITV_tc_val(), INITVKIND_BLOCK, INITVKIND_SYMDIFF, INITVKIND_SYMDIFF16, INITVKIND_ZERO, NULL, Print_INITV_idx(), ST_name, strlen(), strncmp(), sym_name, and TFile.
Referenced by CG_Generate_Code().
Definition at line 530 of file eh_region.cxx.
References EH_RANGE::ereg_supp, first, INITO_st(), INITO_val(), INITV_blk(), INITV_kind(), INITVKIND_BLOCK, INITVKIND_LABEL, and ST_is_not_used.
Referenced by EH_Set_End_Label(), and EH_Set_Start_Label().
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().
Definition at line 726 of file eh_region.cxx.
Referenced by CG_Generate_Code(), and Finalize_All_BBs().
Definition at line 2203 of file eh_region.cxx.
References EH_RANGE_LIST::begin(), Create_INITO_For_Range_Table(), EH_RANGE_LIST::end(), first, fix_mask_ranges(), flatten_regions(), Get_Current_PU, last, NULL, reorder_range_list(), EH_RANGE_LIST::size(), ST_For_Range_Table(), and WN_st().
Referenced by CG_Generate_Code().
Definition at line 848 of file eh_region.cxx.
References EH_RANGE_LIST::begin(), EH_RANGE_LIST::end(), EH_RANGE_LIST::rbegin(), and EH_RANGE_LIST::rend().
Referenced by EH_Write_Range_Table().
Definition at line 1080 of file eh_region.cxx.
References EH_RANGE_LIST::add_range(), EH_RANGE::end_bb, EH_RANGE::end_label, Get_Label_BB(), EH_RANGE::has_call, i, iter, NULL, EH_RANGE_LIST::size(), and EH_RANGE::start_label.
Referenced by EH_Write_Range_Table().
| static const char* Get_INITV_kind | ( | INITVKIND | kind | ) | [static] |
Definition at line 1211 of file eh_region.cxx.
References CASE_KIND, INITVKIND_BLOCK, INITVKIND_LABEL, INITVKIND_ONE, INITVKIND_PAD, INITVKIND_SYMDIFF, INITVKIND_SYMDIFF16, INITVKIND_SYMOFF, INITVKIND_UNK, INITVKIND_VAL, and INITVKIND_ZERO.
Referenced by EH_Dump_INITV().
| static const char* Get_LABEL_Kind | ( | LABEL_KIND | kind | ) | [static] |
Definition at line 1234 of file eh_region.cxx.
References CASE_KIND, LKIND_ASSIGNED, LKIND_BEGIN_EH_RANGE, LKIND_BEGIN_HANDLER, LKIND_DEFAULT, LKIND_END_EH_RANGE, and LKIND_END_HANDLER.
Referenced by EH_Dump_INITV(), and Print_EH_Range().
Definition at line 1019 of file eh_region.cxx.
References EH_Build_PIC_Type(), filter(), INITO_IDX_ZERO, INITO_st(), INITO_val(), INITV_blk(), INITV_IDX_ZERO, INITV_kind(), INITV_next(), INITV_tc_val(), INITVKIND_ZERO, make_pair(), and PU::misc.
| static void INITV_Init_Integer_2 | ( | INITV_IDX | inv, | |
| TYPE_ID | mtype, | |||
| INT64 | val, | |||
| UINT16 | repeat | |||
| ) | [static] |
Definition at line 1454 of file eh_region.cxx.
References Enter_tcon(), Host_To_Targ(), INITV_Set_VAL(), INITV_Set_ZERO(), and Initv_Table.
| bool operator== | ( | const EH_RANGE_LIST_PARENT_ITER & | x, | |
| const EH_RANGE_LIST_PARENT_ITER & | y | |||
| ) | [inline] |
| bool operator== | ( | const RID_PARENT_ITER & | x, | |
| const RID_PARENT_ITER & | y | |||
| ) |
| bool operator== | ( | const RID_POST_ITER & | x, | |
| const RID_POST_ITER & | y | |||
| ) | [inline] |
| INT16 parent_offset | ( | INT32 | i | ) | [inline] |
Definition at line 1304 of file eh_region.cxx.
References EH_RANGE::end_label, EH_RANGE::ereg_supp, first, fprintf(), Get_LABEL_Kind(), EH_RANGE::has_call, INITO_val(), INITV_blk(), INITV_kind(), INITV_lab(), INITV_next(), INITV_tc_val(), INITVKIND_BLOCK, INITVKIND_LABEL, INITVKIND_VAL, INITVKIND_ZERO, EH_RANGE::kind, LABEL::kind, lab, LABEL_name, Label_Table, EH_RANGE::parent, EH_RANGE::start_label, sym, and tmp.
Referenced by EH_Print_Range_List().
Definition at line 2234 of file eh_region.cxx.
References Label_Table.
Referenced by print_branch().
Definition at line 1365 of file eh_region.cxx.
References filter(), FmtAssert, fprintf(), INITO_IDX_ZERO, INITO_st(), INITO_val(), INITV_blk(), INITV_IDX_ZERO, INITV_kind(), INITV_next(), INITV_tc_val(), INITVKIND_BLOCK, INITVKIND_ZERO, PU::misc, Print_INITV_idx(), ST_is_not_used, ST_name, St_Table, and TFile.
Referenced by CG_Generate_Code().
| static eh_range_kind Range_Kind | ( | RID * | rid | ) | [static] |
Definition at line 288 of file eh_region.cxx.
References ehk_cleanup, ehk_exc_spec, ehk_guard, ehk_last, ehk_mask, ehk_try_block, RID_TYPE_cleanup, RID_TYPE_exc_spec, RID_TYPE_guard, RID_TYPE_mask, RID_TYPE_null_cleanup, and RID_TYPE_try.
| void reorder_range_list | ( | ) |
Definition at line 762 of file eh_region.cxx.
References alloca, bb_count, BB_id, BB_next, EH_RANGE_LIST::begin(), EH_RANGE_LIST::end(), end_bb(), first, i, INT32, Is_True, last, memset, NULL, PU_BB_Count, REGION_First_BB, and EH_RANGE_LIST::size().
Referenced by EH_Write_Range_Table().
| static int sizeof_signed_leb128 | ( | int | value | ) | [static] |
Definition at line 1200 of file eh_region.cxx.
References _dwarf_pro_encode_signed_leb128_nm(), DW_DLV_OK, ENCODE_SPACE_NEEDED, FmtAssert, and size.
Definition at line 881 of file eh_region.cxx.
References Allocate_Object(), CLASS_VAR, CURRENT_SYMTAB, EXPORT_LOCAL, Is_Target_64bit, KIND_STRUCT, MTYPE_M, New_ST(), New_TY(), Pointer_Size, pu, Save_Str2(), SCLASS_EH_REGION, Set_ST_is_initialized, Set_TY_align, EH_RANGE_LIST::size(), size, ST_Init(), ST_name, TY_Init(), TY_name_idx(), UINT32, Use_Long_EH_Range_Offsets(), and WN_st().
Referenced by EH_Write_Range_Table().
Definition at line 874 of file eh_region.cxx.
References Force_Long_EH_Range_Offsets, PU_WN_BB_Cnt, and PU_WN_Stmt_Cnt.
Referenced by Create_INITO_For_Range_Table(), and ST_For_Range_Table().
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.
EH_RANGE_LIST range_list [static] |
Definition at line 410 of file eh_region.cxx.
Definition at line 956 of file eh_region.cxx.
| map<ST_IDX, int, cmpst> type_filter_map |
Definition at line 1136 of file eh_region.cxx.
1.5.6