osprey/ipa/common/ipc_type_merge.cxx File Reference

#include <stdint.h>
#include "defs.h"
#include "symtab.h"
#include "ipc_symtab_merge.h"
#include "ipc_ty_hash.h"
#include "ipc_type_merge.h"
#include "config_ipa.h"
#include <ext/hash_set>
#include <ext/hash_map>

Include dependency graph for ipc_type_merge.cxx:

Go to the source code of this file.

Data Types

type  array_access
type  struct_access
type  pointer_access
type  function_access

Defines

#define __STDC_LIMIT_MACROS

Enumerations

enum  VALIDATION_STATE { VALIDATE_OK = 1, VALIDATE_FAIL = 2, VALIDATE_COMMIT = 3 }

Functions/Subroutines

static BOOL ARB_equal (const ARB_HANDLE merged_arb, const ARB &new_arb)
static VALIDATION_STATE Validate_Recursive_Type (TY_INDEX index, TY_IDX_MAP &ty_map, const SYMSTR_IDX_MAP &str_map, TY_IDX merged_ty_idx)
BOOL TY_is_incomplete (TY_IDX tyi, BOOL in_file)
template<class ACCESS>
VALIDATION_STATE Partial_Match (const TY &merged_ty, const TY &new_ty, TY_IDX_MAP &ty_map, const SYMSTR_IDX_MAP &str_map, const ACCESS &ty_node)
template<class ACCESS>
VALIDATION_STATE New_Partial_Match (const TY &merged_ty, const TY &new_ty, TY_IDX_MAP &ty_map, const SYMSTR_IDX_MAP &str_map, const ACCESS &ty_node)
static void Clear_All_Temp_Idx (TY_INDEX index, TY_IDX_MAP &ty_map)
template<class ACCESS>
void Clear_Temp_Idx_Specific (const TY &new_ty, TY_IDX_MAP &ty_map, const ACCESS &ty_node)
static TY_IDX Find_Recursive_Type (TY_INDEX index, TY_IDX_MAP &ty_map, const SYMSTR_IDX_MAP &str_map, const TY &ty)
static void Commit_Recursive_Type (TY_INDEX index, TY_IDX_MAP &ty_map, TY_IDX merged_ty_idx)
template<class ACCESS>
void Commit_Ty_Specific (const TY &new_ty, TY_IDX_MAP &ty_map, TY_IDX merged_ty_idx, const ACCESS &ty_node)
static TY_IDX Insert_Ty (TY_INDEX index, TY_IDX_MAP &ty_map, const SYMSTR_IDX_MAP &str_map)
template<class ACCESS>
TY_IDX Insert_Ty_Specific (TY_INDEX index, TY_IDX_MAP &ty_map, const SYMSTR_IDX_MAP &str_map, const ACCESS &ty_node)
BOOL Is_Incomplete_Or_Recursive (TY_INDEX ty_index)
void Merge_All_Types (const IPC_GLOBAL_TABS &original_tabs, IPC_GLOBAL_IDX_MAP &idx_map)

Variables

hash_map< STR_IDX, TY_INDEX,
__new_hash::hash< STR_IDX >
, std::equal_to< STR_IDX > > 
struct_by_name_idx
hash_set< TY_INDEXto_update_incomplete_ty
hash_set< TY_INDEXupdating_incomplete_ty
static const IPC_GLOBAL_TABSfile_tables
hash_set< TY_INDEXcomplete_nonrecursive_type
hash_set< TY_INDEXprocessing_recursive_type


Define Documentation

#define __STDC_LIMIT_MACROS

Definition at line 40 of file ipc_type_merge.cxx.


Enumeration Type Documentation

Enumerator:
VALIDATE_OK 
VALIDATE_FAIL 
VALIDATE_COMMIT 

Definition at line 214 of file ipc_type_merge.cxx.


Function Documentation

static BOOL ARB_equal ( const ARB_HANDLE  merged_arb,
const ARB new_arb 
) [inline, static]

Definition at line 81 of file ipc_type_merge.cxx.

References ARB_HANDLE::Entry(), p1, p2, and UINT64.

static void Clear_All_Temp_Idx ( TY_INDEX  index,
TY_IDX_MAP ty_map 
) [static]

template<class ACCESS>
void @3072::Clear_Temp_Idx_Specific ( const TY new_ty,
TY_IDX_MAP ty_map,
const ACCESS &  ty_node 
) [inline, static]

static void Commit_Recursive_Type ( TY_INDEX  index,
TY_IDX_MAP ty_map,
TY_IDX  merged_ty_idx 
) [static]

template<class ACCESS>
void @3072::Commit_Ty_Specific ( const TY new_ty,
TY_IDX_MAP ty_map,
TY_IDX  merged_ty_idx,
const ACCESS &  ty_node 
) [inline, static]

static TY_IDX Find_Recursive_Type ( TY_INDEX  index,
TY_IDX_MAP ty_map,
const SYMSTR_IDX_MAP str_map,
const TY ty 
) [static]

static TY_IDX Insert_Ty ( TY_INDEX  index,
TY_IDX_MAP ty_map,
const SYMSTR_IDX_MAP str_map 
) [static]

template<class ACCESS>
TY_IDX @3072::Insert_Ty_Specific ( TY_INDEX  index,
TY_IDX_MAP ty_map,
const SYMSTR_IDX_MAP str_map,
const ACCESS &  ty_node 
) [inline, static]

BOOL Is_Incomplete_Or_Recursive ( TY_INDEX  ty_index  ) 

void Merge_All_Types ( const IPC_GLOBAL_TABS original_tabs,
IPC_GLOBAL_IDX_MAP idx_map 
)

template<class ACCESS>
VALIDATION_STATE @3072::New_Partial_Match ( const TY merged_ty,
const TY new_ty,
TY_IDX_MAP ty_map,
const SYMSTR_IDX_MAP str_map,
const ACCESS &  ty_node 
) [inline, static]

template<class ACCESS>
VALIDATION_STATE @3072::Partial_Match ( const TY merged_ty,
const TY new_ty,
TY_IDX_MAP ty_map,
const SYMSTR_IDX_MAP str_map,
const ACCESS &  ty_node 
) [inline, static]

BOOL @3072::TY_is_incomplete ( TY_IDX  tyi,
BOOL  in_file 
) [inline, static]

static VALIDATION_STATE Validate_Recursive_Type ( TY_INDEX  index,
TY_IDX_MAP ty_map,
const SYMSTR_IDX_MAP str_map,
TY_IDX  merged_ty_idx 
) [static]


Variable Documentation

To speed up finding recursive type, it must reduce the recursive table. We know that below types should be inserted into the recursive table. 1. Explicit recursive types, or 2. Types has kids with incomplete types. So we only recognize the complete non-recursive types and add them into a set. The elements not in the set may be recursive and add them into the recursive table.

Definition at line 863 of file ipc_type_merge.cxx.

Referenced by Is_Incomplete_Or_Recursive().

const IPC_GLOBAL_TABS* file_tables [static]

Definition at line 96 of file ipc_type_merge.cxx.

Definition at line 864 of file ipc_type_merge.cxx.

Referenced by Is_Incomplete_Or_Recursive().

Definition at line 56 of file ipc_type_merge.cxx.

Referenced by Find_Recursive_Type(), Insert_Allocated_Ty(), and Insert_Ty().

Definition at line 59 of file ipc_type_merge.cxx.

Referenced by Commit_Recursive_Type(), Insert_Ty(), and Merge_All_Types().


Generated on Wed Apr 8 15:09:39 2009 for Open64 by  doxygen 1.5.6