ack/mach/proto/mcg/procedure.h
David Given b5c1d622f5 Rework the way stack frames are laid out to be simpler and, hopefully, more
correct. Saved registers are now placed in what may be the right place.
2016-11-11 21:17:45 +01:00

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 : */