Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
w2cf_symtab.cxx File Reference
#include <ctype.h>
#include <string.h>
#include "common_include.h"
#include "mempool.h"
#include "unparse_target.h"
#include "w2cf_symtab.h"
Include dependency graph for w2cf_symtab.cxx:

Go to the source code of this file.

Classes

struct  W2CF_Stringbuf
struct  W2CF_Symtab_Stack
struct  W2CF_Symtab
struct  W2CF_Symhdr
struct  W2CF_Symbol

Defines

#define MAX_LABEL_NUMBER   99999U
#define W2CF_STRINGBUF_size(s)   (s).size
#define W2CF_STRINGBUF_next_char(s)   (s).next_char
#define W2CF_STRINGBUF_chars(s)   (s).chars
#define W2CF_SYMTAB_STACK_top(s)   (s).top
#define W2CF_SYMTAB_STACK_bot(s)   (s).bot
#define W2CF_SYMTAB_unique_label(s)   (s)->unique_label
#define W2CF_SYMTAB_size(s)   (s)->size
#define W2CF_SYMTAB_hash_tbl(s)   (s)->hash_tbl
#define W2CF_SYMTAB_strbuf(s)   (s)->strbuf
#define W2CF_SYMTAB_up(s)   (s)->up
#define W2CF_SYMTAB_down(s)   (s)->down
#define W2CF_SYMTAB_next(s)   (s)->down /* For free-list */
#define W2CF_SYMHDR_hashval(s)   (s)->hashval
#define W2CF_SYMHDR_next_symid(s)   (s)->next_symid
#define W2CF_SYMHDR_basename(s)   (s)->basename
#define W2CF_SYMHDR_symbol(s)   (s)->symbol
#define W2CF_SYMHDR_next(s)   (s)->next
#define W2CF_SYMBOL_kind(s)   (s)->kind
#define W2CF_SYMBOL_symid(s)   (s)->symid
#define W2CF_SYMBOL_name(s)   (s)->name
#define W2CF_SYMBOL_next(s)   (s)->next
#define W2CF_SYMBOL_attr(s)   (s)->attr
#define W2CF_SYMBOL_fld(s)   (s)->attr.fld
#define W2CF_SYMBOL_fld_ptr(s)   (s)->attr.fld_ptr
#define W2CF_SYMBOL_ty(s)   (s)->attr.ty
#define W2CF_SYMBOL_st(s)   (s)->attr.st
#define W2CF_SYMBOL_st_ptr(s)   (s)->attr.st_ptr
#define W2CF_SYMBOL_tempvar_id(s)   (s)->attr.tempvar_id
#define W2CF_SYMBOL_preg_ty(s)   (s)->attr.preg.preg_ty
#define W2CF_SYMBOL_preg_num(s)   (s)->attr.preg.preg_num
#define W2CF_INVALID_SYMID   -2
#define W2CF_FIRST_VALID_SYMID   -1
#define W2CF_NOSUFFIX_SYMID   W2CF_FIRST_VALID_SYMID
#define INITIAL_STRING_BUFFER_SIZE   1024
#define INITIAL_SYMTAB_SIZE   1024
#define W2CF_SYMTAB_strbuf_size(s)   W2CF_STRINGBUF_size(W2CF_SYMTAB_strbuf(s))
#define W2CF_SYMTAB_strbuf_next(s)   W2CF_STRINGBUF_next_char(W2CF_SYMTAB_strbuf(s))
#define W2CF_SYMTAB_strbuf_chars(s)   W2CF_STRINGBUF_chars(W2CF_SYMTAB_strbuf(s))
#define W2CF_SYMHDR_basename_string(symtab, symhdr)   &W2CF_SYMTAB_strbuf_chars(symtab)[W2CF_SYMHDR_basename(symhdr)]
#define W2CF_SYMBOL_name_string(symtab, symbol)   &W2CF_SYMTAB_strbuf_chars(symtab)[W2CF_SYMBOL_name(symbol)]
#define MAX_NUMERIC_SUFFIX_SIZE   8 /* fits into a UINT32 */

Typedefs

typedef UINT32 W2CF_STR_IDX
typedef struct W2CF_Stringbuf W2CF_STRINGBUF
typedef struct W2CF_Symtab W2CF_SYMTAB
typedef struct W2CF_Symtab_Stack W2CF_SYMTAB_STACK
typedef struct W2CF_Symhdr W2CF_SYMHDR
typedef struct W2CF_Symbol W2CF_SYMBOL
typedef enum W2CF_Symbol_Kind W2CF_SYMBOL_KIND

Enumerations

enum  W2CF_Symbol_Kind {
  SYMKIND_UNKNOWN, SYMKIND_UNIQUE, SYMKIND_FLD, SYMKIND_FLD_POINTEE,
  SYMKIND_TY, SYMKIND_ST, SYMKIND_ST_POINTEE, SYMKIND_TEMPVAR,
  SYMKIND_PREG
}

Functions

static void W2CF_Dump_Symbol (W2CF_SYMBOL *sym, W2CF_SYMTAB *symtab=NULL)
static void W2CF_Dump_Symtab (W2CF_SYMTAB *symtab)
static void W2CF_Dump_Symhdr (W2CF_SYMHDR *symhdr, W2CF_SYMTAB *symtab=NULL)
static W2CF_STR_IDX W2CF_Symtab_Alloc_Chars (W2CF_SYMTAB *symtab, UINT32 size)
static void W2CF_Get_Basename (const char *original_name, char *basename, INT32 *sym_id)
static BOOL W2CF_Avoid_Suffix (W2CF_SYMBOL *symbol)
static BOOL W2CF_Identical_Symkinds (W2CF_SYMBOL *sym1, W2CF_SYMBOL *sym2)
static void W2CF_Insert_Symbol (W2CF_SYMHDR *symhdr, W2CF_SYMBOL *symbol)
static W2CF_SYMHDRW2CF_Search_Symhdr (W2CF_SYMTAB *symtab, const char *basename)
static W2CF_SYMBOLW2CF_Search_Symbol (W2CF_SYMHDR *symhdr, W2CF_SYMBOL *match_symbol)
static W2CF_SYMHDRW2CF_Create_Symhdr (W2CF_SYMTAB *symtab, const char *basename)
static W2CF_SYMBOLW2CF_Create_Symbol (W2CF_SYMTAB *symtab, W2CF_SYMHDR *symhdr, W2CF_SYMBOL *match_symbol)
static void W2CF_Get_Symbol (W2CF_SYMTAB **found_symtab, W2CF_SYMHDR **found_symhdr, W2CF_SYMBOL **found_symbol, W2CF_SYMBOL *match_symbol, const char *basename)
void W2CF_Symtab_Push (void)
void W2CF_Symtab_Pop (void)
const char * W2CF_Symtab_Nameof_St (const ST *st)
const char * W2CF_Symtab_Nameof_St_Pointee (const ST *st)
const char * W2CF_Symtab_Nameof_Ty (TY_IDX ty)
const char * W2CF_Symtab_Nameof_Fld (FLD_HANDLE fld)
const char * W2CF_Symtab_Nameof_Fld_Pointee (FLD_HANDLE fld)
const char * W2CF_Symtab_Nameof_Tempvar (INT32 tempvar_id)
const char * W2CF_Symtab_Nameof_Preg (const TY_IDX preg_ty, PREG_NUM preg_num)
const char * W2CF_Symtab_Unique_Name (const char *name)
UINT32 W2CF_Symtab_Unique_Label (void)
void W2CF_Symtab_Free (void)
void W2CF_Symtab_Terminate (void)

Variables

BOOL Run_w2f
BOOL Run_w2c
static W2CF_SYMTAB_STACK Symtab_Stack = {NULL, NULL}
static W2CF_SYMTABSymtab_Free_List = NULL
static W2CF_SYMHDRSymhdr_Free_List = NULL
static W2CF_SYMBOLSymbol_Free_List = NULL
static const char W2CF_Anonymous_Fld [] = "fld"
static const char W2CF_Anonymous_Ty [] = "ty"
static const char W2CF_Anonymous_St [] = "anon"
static const char W2CF_Anonymous_Tempvar [] = "tmp"
static const char W2CF_Anonymous_Preg [] = "reg"

Define Documentation

#define INITIAL_STRING_BUFFER_SIZE   1024

Definition at line 219 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Alloc_Chars().

#define INITIAL_SYMTAB_SIZE   1024

Definition at line 220 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Push().

#define MAX_LABEL_NUMBER   99999U

Definition at line 88 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Push().

#define MAX_NUMERIC_SUFFIX_SIZE   8 /* fits into a UINT32 */

Referenced by W2CF_Get_Basename().

#define W2CF_FIRST_VALID_SYMID   -1

Definition at line 205 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symhdr().

#define W2CF_INVALID_SYMID   -2

Definition at line 204 of file w2cf_symtab.cxx.

Referenced by W2CF_Get_Basename().

Definition at line 206 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symbol().

#define W2CF_STRINGBUF_chars (   s)    (s).chars

Definition at line 100 of file w2cf_symtab.cxx.

Referenced by W2CF_Dump_Symtab().

#define W2CF_STRINGBUF_next_char (   s)    (s).next_char

Definition at line 99 of file w2cf_symtab.cxx.

Referenced by W2CF_Dump_Symtab().

#define W2CF_STRINGBUF_size (   s)    (s).size

Definition at line 98 of file w2cf_symtab.cxx.

Referenced by W2CF_Dump_Symtab().

#define W2CF_SYMBOL_attr (   s)    (s)->attr

Definition at line 190 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symbol().

#define W2CF_SYMBOL_fld (   s)    (s)->attr.fld
#define W2CF_SYMBOL_fld_ptr (   s)    (s)->attr.fld_ptr

Definition at line 192 of file w2cf_symtab.cxx.

Referenced by W2CF_Identical_Symkinds(), and W2CF_Symtab_Nameof_Fld_Pointee().

#define W2CF_SYMBOL_name (   s)    (s)->name

Definition at line 188 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symbol(), and W2CF_Dump_Symbol().

#define W2CF_SYMBOL_preg_num (   s)    (s)->attr.preg.preg_num
#define W2CF_SYMBOL_preg_ty (   s)    (s)->attr.preg.preg_ty
#define W2CF_SYMBOL_st (   s)    (s)->attr.st
#define W2CF_SYMBOL_st_ptr (   s)    (s)->attr.st_ptr

Definition at line 195 of file w2cf_symtab.cxx.

Referenced by W2CF_Identical_Symkinds(), and W2CF_Symtab_Nameof_St_Pointee().

#define W2CF_SYMBOL_tempvar_id (   s)    (s)->attr.tempvar_id

Definition at line 196 of file w2cf_symtab.cxx.

Referenced by W2CF_Identical_Symkinds(), and W2CF_Symtab_Nameof_Tempvar().

#define W2CF_SYMBOL_ty (   s)    (s)->attr.ty
#define W2CF_SYMHDR_basename (   s)    (s)->basename

Definition at line 143 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symbol(), and W2CF_Create_Symhdr().

#define W2CF_SYMHDR_basename_string (   symtab,
  symhdr 
)    &W2CF_SYMTAB_strbuf_chars(symtab)[W2CF_SYMHDR_basename(symhdr)]
#define W2CF_SYMHDR_hashval (   s)    (s)->hashval

Definition at line 141 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symhdr(), W2CF_Dump_Symhdr(), and W2CF_Search_Symhdr().

#define W2CF_SYMHDR_next_symid (   s)    (s)->next_symid

Definition at line 142 of file w2cf_symtab.cxx.

Referenced by W2CF_Create_Symhdr(), W2CF_Dump_Symhdr(), and W2CF_Insert_Symbol().

#define W2CF_SYMHDR_symbol (   s)    (s)->symbol
#define W2CF_SYMTAB_down (   s)    (s)->down
#define W2CF_SYMTAB_next (   s)    (s)->down /* For free-list */

Definition at line 129 of file w2cf_symtab.cxx.

Referenced by W2CF_Dump_Symtab(), W2CF_Symtab_Free(), and W2CF_Symtab_Pop().

#define W2CF_SYMTAB_STACK_bot (   s)    (s).bot

Definition at line 110 of file w2cf_symtab.cxx.

Referenced by W2CF_Get_Symbol(), W2CF_Symtab_Pop(), and W2CF_Symtab_Push().

#define W2CF_SYMTAB_strbuf (   s)    (s)->strbuf

Definition at line 126 of file w2cf_symtab.cxx.

Referenced by W2CF_Dump_Symtab().

#define W2CF_SYMTAB_unique_label (   s)    (s)->unique_label

Definition at line 123 of file w2cf_symtab.cxx.

Referenced by W2CF_Dump_Symtab(), W2CF_Symtab_Push(), and W2CF_Symtab_Unique_Label().

#define W2CF_SYMTAB_up (   s)    (s)->up

Typedef Documentation

Definition at line 90 of file w2cf_symtab.cxx.

Definition at line 91 of file w2cf_symtab.cxx.

typedef struct W2CF_Symbol W2CF_SYMBOL

Definition at line 132 of file w2cf_symtab.cxx.

typedef struct W2CF_Symhdr W2CF_SYMHDR

Definition at line 113 of file w2cf_symtab.cxx.

typedef struct W2CF_Symtab W2CF_SYMTAB

Definition at line 103 of file w2cf_symtab.cxx.


Enumeration Type Documentation

Enumerator:
SYMKIND_UNKNOWN 
SYMKIND_UNIQUE 
SYMKIND_FLD 
SYMKIND_FLD_POINTEE 
SYMKIND_TY 
SYMKIND_ST 
SYMKIND_ST_POINTEE 
SYMKIND_TEMPVAR 
SYMKIND_PREG 

Definition at line 150 of file w2cf_symtab.cxx.


Function Documentation

static BOOL W2CF_Avoid_Suffix ( W2CF_SYMBOL symbol) [static]

Definition at line 338 of file w2cf_symtab.cxx.

References Unparse_Target::Avoid_Common_Suffix(), Compile_Upc, FALSE, Stab_Is_Common_Block(), SYMKIND_ST, SYMKIND_TY, TRUE, W2CF_SYMBOL_kind, W2CF_SYMBOL_st, and W2X_Unparse_Target.

Referenced by W2CF_Create_Symbol().

Here is the call graph for this function:

static void W2CF_Dump_Symhdr ( W2CF_SYMHDR symhdr,
W2CF_SYMTAB symtab = NULL 
) [static]
static void W2CF_Insert_Symbol ( W2CF_SYMHDR symhdr,
W2CF_SYMBOL symbol 
) [static]
static W2CF_SYMBOL* W2CF_Search_Symbol ( W2CF_SYMHDR symhdr,
W2CF_SYMBOL match_symbol 
) [static]

Definition at line 501 of file w2cf_symtab.cxx.

References NULL, W2CF_Identical_Symkinds(), W2CF_SYMBOL_next, and W2CF_SYMHDR_symbol.

Referenced by W2CF_Get_Symbol().

Here is the call graph for this function:

static W2CF_SYMHDR* W2CF_Search_Symhdr ( W2CF_SYMTAB symtab,
const char *  basename 
) [static]
void W2CF_Symtab_Terminate ( void  )

Definition at line 1160 of file w2cf_symtab.cxx.

References NULL, W2CF_Symtab_Free(), W2CF_Symtab_Pop(), and W2CF_SYMTAB_STACK_top.

Referenced by W2C_Fini(), and W2F_Fini().

Here is the call graph for this function:

Definition at line 1117 of file w2cf_symtab.cxx.

References W2CF_SYMTAB_STACK_top, and W2CF_SYMTAB_unique_label.

Referenced by WN2F_io().


Variable Documentation

Definition at line 243 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Free(), and W2CF_Symtab_Pop().

Definition at line 242 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Free(), and W2CF_Symtab_Pop().

Definition at line 241 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Free(), W2CF_Symtab_Pop(), and W2CF_Symtab_Push().

Definition at line 240 of file w2cf_symtab.cxx.

const char W2CF_Anonymous_Fld[] = "fld" [static]

Definition at line 245 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Nameof_Fld().

const char W2CF_Anonymous_Preg[] = "reg" [static]

Definition at line 249 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Nameof_Preg().

const char W2CF_Anonymous_St[] = "anon" [static]

Definition at line 247 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Nameof_St(), and W2CF_Symtab_Unique_Name().

const char W2CF_Anonymous_Tempvar[] = "tmp" [static]

Definition at line 248 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Nameof_Tempvar().

const char W2CF_Anonymous_Ty[] = "ty" [static]

Definition at line 246 of file w2cf_symtab.cxx.

Referenced by W2CF_Symtab_Nameof_Ty().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines