b5c1d622f5
correct. Saved registers are now placed in what may be the right place.
36 lines
797 B
C
36 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 : */
|