From 25bab8b1fb2fc851ea3f1f630b3de65ca6afdc22 Mon Sep 17 00:00:00 2001 From: Ash Wolf Date: Wed, 14 Dec 2022 00:16:59 +0000 Subject: haha it's been a while since i last committed, hasn't it --- includes/compiler/UseDefChains.h | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'includes/compiler/UseDefChains.h') diff --git a/includes/compiler/UseDefChains.h b/includes/compiler/UseDefChains.h index bcdbfe0..6957897 100644 --- a/includes/compiler/UseDefChains.h +++ b/includes/compiler/UseDefChains.h @@ -2,5 +2,65 @@ #define COMPILER_USEDEFCHAINS_H #include "compiler/common.h" +#include "compiler/Registers.h" +#include "compiler/PCodeInfo.h" + +#ifdef __MWERKS__ +#pragma options align=mac68k +#endif +typedef struct TinyValue { + PCOpKind kind; + unsigned char arg; + union { + short reg; + Object *object; + } u; +} TinyValue; + +typedef struct UseDefInfo { + UInt32 *defvec0; + UInt32 *defvec4; + UInt32 *defvec8; + UInt32 *defvecC; + UInt32 *usevec10; + UInt32 *usevec14; + UInt32 *usevec18; + UInt32 *usevec1C; +} UseDefInfo; + +typedef struct UseOrDef { + PCode *pcode; + TinyValue v; +} UseOrDef; + +typedef struct RegUseOrDef { + struct RegUseOrDef *next; + int id; +} RegUseOrDef; + +typedef struct ObjectUseDef { + struct ObjectUseDef *next; + struct ObjectUseDef *leftchild; + struct ObjectUseDef *rightchild; + Object *object; + RegUseOrDef *uses; + RegUseOrDef *defs; +} ObjectUseDef; +#ifdef __MWERKS__ +#pragma options align=reset +#endif + +extern int number_of_Defs; +extern UseOrDef *Defs; +extern RegUseOrDef **reg_Defs[RegClassMax]; +extern int number_of_Uses; +extern UseOrDef *Uses; +extern RegUseOrDef **reg_Uses[RegClassMax]; +extern UseDefInfo *usedefinfo; +extern ObjectUseDef *objectusedefs; +extern ObjectUseDef *objectusedeflist; + +extern ObjectUseDef *findobjectusedef(Object *object); +extern void computeusedefchains(int flag); #endif -- cgit v1.2.3