35 lines
		
	
	
	
		
			797 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			797 B
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef PROCEDURE_H
 | 
						|
#define PROCEDURE_H
 | 
						|
 | 
						|
struct local
 | 
						|
{
 | 
						|
    int size;
 | 
						|
    int offset;
 | 
						|
    bool is_register;
 | 
						|
};
 | 
						|
 | 
						|
struct procedure
 | 
						|
{
 | 
						|
    const char* name;
 | 
						|
    struct basicblock* entry;
 | 
						|
    struct basicblock* exit;
 | 
						|
    int locals_size;
 | 
						|
    int spills_size;
 | 
						|
    int saved_size;
 | 
						|
    int fp_to_ab; /* argument base (indexes up) */
 | 
						|
    int fp_to_lb; /* locals base (indexes down) */
 | 
						|
    int fp_to_sb; /* spill base (indexes up) */
 | 
						|
    int fp_to_rb; /* saved registers base (indexes up) */
 | 
						|
    ARRAYOF(struct basicblock) blocks;
 | 
						|
    IMAPOF(struct local) locals;
 | 
						|
    ARRAYOF(struct hreg) usedregs;
 | 
						|
};
 | 
						|
 | 
						|
extern void procedure_compile(struct procedure* proc);
 | 
						|
extern void procedure_update_bb_graph(struct procedure* proc);
 | 
						|
 | 
						|
extern struct procedure* current_proc;
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
/* vim: set sw=4 ts=4 expandtab : */
 |