C:/Users/Dennis/src/lang/russell.orig/src/RICfilter/filter.c File Reference

#include <stdio.h>
#include "../pass5d/op_codes.h"
#include "../parm.h"
#include "RIC.h"

Go to the source code of this file.

Data Structures

struct  reg_descr

Defines

#define DEBUG
#define TRACE
#define HASHT_SIZE   32
#define mod_sz(n)   ((n) & 0x1f)
#define NO_REG   -2
#define is_real_reg(r)
#define S_LIVE   0
#define S_DEAD   1
#define S_UDC   2
#define NOT_CONSTANT   0x40000000
#define reg_nil   ((regp) 0)
#define DP_DOT   "_Float_Dot"
#define SP_DOT   "_SFloat_Dot"
#define SBFSZ   120

Typedefs

typedef struct RIC_instrRICp
typedef struct reg_descrregp

Functions

void add_after (RICp p, RICp q)
void delete (RICp p)
void clear_block ()
void write_block ()
RICp make_instr (int opc, int arg1, int arg2, int arg3)
RICp make_lbl_instr (int opc, char *lbl)
RICp read_instr ()
void set_regs (RICp p)
regp lookup ()
void clear_equiv (regp r)
regp lookup (int reg_no)
void clear_hasht ()
void propagate ()
void eliminate ()
void optimize_block ()
 main (int argc, char **argv)

Variables

char label_buf [MAXLABELSZ+1]
struct RIC_instrcbb = RIC_nil
struct RIC_instrcbb_last = RIC_nil
regp hasht [HASHT_SIZE]
long const_arg_table [3]
RICp arg_instrs [3]


Define Documentation

#define DEBUG

Definition at line 1 of file filter.c.

#define DP_DOT   "_Float_Dot"

Referenced by propagate().

#define HASHT_SIZE   32

Definition at line 10 of file filter.c.

Referenced by clear_hasht().

#define is_real_reg (  ) 

Value:

((r) >= FIRST_AVAIL_LOC || (r) == TL \
                         || (r) == RL || (r) == T2)

Definition at line 202 of file filter.c.

Referenced by clear_equiv(), propagate(), and set_regs().

#define mod_sz (  )     ((n) & 0x1f)

Definition at line 12 of file filter.c.

Referenced by lookup().

#define NO_REG   -2

Definition at line 16 of file filter.c.

Referenced by clear_equiv(), eliminate(), lookup(), propagate(), and set_regs().

#define NOT_CONSTANT   0x40000000

Definition at line 389 of file filter.c.

Referenced by clear_equiv(), lookup(), and propagate().

#define reg_nil   ((regp) 0)

Definition at line 394 of file filter.c.

Referenced by clear_equiv(), clear_hasht(), lookup(), and propagate().

#define S_DEAD   1

Definition at line 378 of file filter.c.

Referenced by eliminate().

#define S_LIVE   0

Definition at line 377 of file filter.c.

Referenced by eliminate(), and propagate().

#define S_UDC   2

Definition at line 379 of file filter.c.

Referenced by clear_hasht(), eliminate(), and propagate().

#define SBFSZ   120

Referenced by propagate().

#define SP_DOT   "_SFloat_Dot"

Referenced by propagate().

#define TRACE

Definition at line 3 of file filter.c.


Typedef Documentation

typedef struct reg_descr* regp

Definition at line 392 of file filter.c.

typedef struct RIC_instr* RICp

Definition at line 14 of file filter.c.


Function Documentation

void add_after ( RICp  p,
RICp  q 
)

Definition at line 27 of file filter.c.

References RIC_instr::next_instr, RIC_instr::prev_instr, and RIC_nil.

Referenced by clear_hasht(), eliminate(), main(), and propagate().

void clear_block (  ) 

Definition at line 81 of file filter.c.

References GC_free(), RIC_instr::next_instr, and RIC_nil.

Referenced by main().

void clear_equiv ( regp  r  ) 

Definition at line 401 of file filter.c.

References reg_descr::const_val, reg_descr::equiv_reg, FALSE, is_real_reg, lookup(), reg_descr::mapped_regs, reg_descr::next_mapped_reg, NO_REG, NOT_CONSTANT, reg_nil, reg_descr::this_reg, and TRUE.

Referenced by propagate().

void clear_hasht (  ) 

Definition at line 492 of file filter.c.

References add_after(), GC_free(), HASHT_SIZE, make_instr(), reg_descr::next_reg, reg_nil, RIC_nil, S_UDC, SK, reg_descr::status, reg_descr::this_reg, and UDC.

Referenced by optimize_block().

void delete ( RICp  p  ) 

Definition at line 48 of file filter.c.

References AL, RIC_instr::arg, HINT, LBA, LBR, RIC_instr::next_instr, NP, NSC, RIC_instr::op_code, RIC_instr::prev_instr, PT, RIC_nil, and STSZ.

void eliminate (  ) 

Definition at line 836 of file filter.c.

References add_after(), DCL, DEAD, FALSE, HINT, lookup(), make_instr(), NO_REG, NONE, RIC_nil, S_DEAD, S_LIVE, S_UDC, SK, reg_descr::status, TRUE, and UDC.

Referenced by optimize_block().

regp lookup ( int  reg_no  ) 

Definition at line 467 of file filter.c.

References reg_descr::const_val, reg_descr::equiv_reg, GC_malloc(), mod_sz, reg_descr::next_reg, NO_REG, NOT_CONSTANT, reg_nil, and reg_descr::this_reg.

regp lookup (  ) 

Referenced by clear_equiv(), eliminate(), and propagate().

main ( int  argc,
char **  argv 
)

Definition at line 961 of file filter.c.

References add_after(), BFN, BR, BRF, BRT, BSF, clear_block(), GC_init(), LBL, optimize_block(), read_instr(), RIC_nil, set_regs(), and write_block().

RICp make_instr ( int  opc,
int  arg1,
int  arg2,
int  arg3 
)

Definition at line 121 of file filter.c.

References RIC_instr::arg, FALSE, GC_malloc(), RIC_instr::label_arg, and RIC_instr::op_code.

Referenced by clear_hasht(), eliminate(), propagate(), and read_instr().

RICp make_lbl_instr ( int  opc,
char *  lbl 
)

Definition at line 137 of file filter.c.

References GC_malloc(), RIC_instr::label, RIC_instr::label_arg, RIC_instr::op_code, and TRUE.

Referenced by propagate(), and read_instr().

void optimize_block (  ) 

Definition at line 951 of file filter.c.

References clear_hasht(), eliminate(), and propagate().

Referenced by main().

void propagate (  ) 

Definition at line 529 of file filter.c.

References add_after(), ALA, ALH, ARG, C0, C1, C2, C3, C4, CLC, clear_equiv(), const_arg_table, reg_descr::const_val, DCL, DDT, DP_DOT, reg_descr::equiv_reg, FALSE, FDT, is_real_reg, LBA, LDI, LDL, LDN, lookup(), make_instr(), make_lbl_instr(), reg_descr::mapped_regs, MOV, reg_descr::next_mapped_reg, NO_REG, NONE, NOT_CONSTANT, reg_nil, RIC_nil, RL, S_LIVE, S_UDC, SBFSZ, set_regs(), SK, SP, SP_DOT, reg_descr::status, TL, TRUE, and UDC.

Referenced by optimize_block().

RICp read_instr (  ) 

Definition at line 153 of file filter.c.

References RIC_instr::arg, GC_free(), HINT, label_buf, make_instr(), make_lbl_instr(), MAX_LABEL_OP, MAXLABELSZ, N_OP_CODES, OPT, and RIC_nil.

Referenced by main().

void set_regs ( RICp  p  ) 

Definition at line 208 of file filter.c.

References ABI, ADF, ADI, ADP, ADT, ALA, ALH, ALS, AND, ARG, RIC_instr::arg, BFN, BR, BRF, BRT, BSF, CLC, CLI, CLL, DCL, DDT, DEA, DEAD, DVF, DVI, EQF, EQI, ERR, EXF, EXT, FALSE, FDT, FIRST_AVAIL_LOC, FLS, GAR, GEF, GEI, GTF, GTI, HINT, IDT, is_real_reg, LBA, LBL, LBR, LDC, LDI, LDL, LDN, LDS, LEF, LEI, LIVE, LTF, LTI, MLF, MLI, MOV, NEF, NEI, NGF, NGI, NO_REG, NONE, NOT, RIC_instr::op1_reg, RIC_instr::op2_reg, RIC_instr::op_code, OR, PRO, PSH, RIC_instr::result_reg, RL, RTN, SBF, SBI, SHF, SHI, RIC_instr::side_effect, SK, STI, STSZ, T2, TAR, TFB, TFE, TL, TRU, TRUE, and UDC.

Referenced by main(), and propagate().

void write_block (  ) 

Definition at line 96 of file filter.c.

References RIC_instr::arg, RIC_instr::label, RIC_instr::label_arg, RIC_instr::next_instr, RIC_instr::op_code, and RIC_nil.

Referenced by main().


Variable Documentation

RICp arg_instrs[3]

Definition at line 517 of file filter.c.

struct RIC_instr* cbb = RIC_nil

Definition at line 20 of file filter.c.

struct RIC_instr* cbb_last = RIC_nil

Definition at line 22 of file filter.c.

long const_arg_table[3]

Definition at line 513 of file filter.c.

Referenced by propagate().

regp hasht[HASHT_SIZE]

Definition at line 396 of file filter.c.

char label_buf[MAXLABELSZ+1]

Definition at line 18 of file filter.c.


Generated on Fri Jan 25 10:39:50 2008 for russell by  doxygen 1.5.4