mirror of https://git.wuffs.org/MWCC
56 lines
1.2 KiB
C
56 lines
1.2 KiB
C
#ifndef COMPILER_COPTIMIZER_H
|
|
#define COMPILER_COPTIMIZER_H
|
|
|
|
#include "compiler/common.h"
|
|
|
|
#ifdef __MWERKS__
|
|
#pragma options align=mac68k
|
|
#endif
|
|
typedef struct COptBlockList {
|
|
struct COptBlockList *next;
|
|
struct COptBlock *block;
|
|
} COptBlockList;
|
|
|
|
typedef struct COptBlock {
|
|
struct COptBlock *next;
|
|
COptBlockList *blocks;
|
|
COptBlockList *blocks2;
|
|
Statement *stmt;
|
|
short *set1;
|
|
short *set2;
|
|
UInt32 allocmask;
|
|
short x1C;
|
|
Boolean x1E;
|
|
} COptBlock;
|
|
|
|
typedef struct COptCSE {
|
|
struct COptCSE *next;
|
|
struct COptCSE *left;
|
|
struct COptCSE *right;
|
|
COptBlock *block;
|
|
ENode *expr;
|
|
ENode *mexpr;
|
|
ENode *replaced;
|
|
short x1C;
|
|
} COptCSE;
|
|
|
|
typedef struct COptCSEList {
|
|
struct COptCSEList *next;
|
|
COptCSE *cse;
|
|
ENode *expr;
|
|
} COptCSEList;
|
|
#ifdef __MWERKS__
|
|
#pragma options align=reset
|
|
#endif
|
|
|
|
extern COptBlock *basicblocks;
|
|
extern Boolean copt_isleaffunction;
|
|
|
|
extern UInt32 RegAllocMask(short var);
|
|
extern void MarkRegAllocMask(short var, short bit, Boolean flag);
|
|
extern void SetVarUsage(Object *obj, Boolean noregister);
|
|
extern void COpt_SimpleOptimizer(Object *obj, Statement *stmt);
|
|
extern Statement *COpt_Optimizer(Object *obj, Statement *stmt);
|
|
|
|
#endif
|