1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
/* file generated by oo2c -- do not edit */
#include "SideEffects.h"
#include "Attributes.h"
#include "Opcode.h"
#include "SymbolTable.h"
/* local definitions */
typedef struct SideEffects__InfoListDesc {
struct SideEffects__InfoListDesc* next;
struct SideEffects__ProcInfoDesc* info;
} SideEffects__InfoListDesc;
typedef struct SideEffects__InfoListDesc* SideEffects__InfoList;
typedef struct SideEffects__ProcInfoDesc {
struct SideEffects__ProcInfoDesc* next;
struct SideEffects__ProcInfoDesc* nextWorklist;
Data__GlobalRegion greg;
Data__Instruction enter;
Data__Instruction exit;
unsigned int flags;
SideEffects__InfoList callerList;
Data__Result enterPtr;
Data__Opnd exitPtr;
Data__Info oldInfo;
} SideEffects__ProcInfoDesc;
typedef struct SideEffects__ProcInfoDesc* SideEffects__ProcInfo;
typedef struct SideEffects__CallInfoDesc {
Data__Object caller;
Data__Object callee;
Data__Opnd memIn;
Data__Result memOut;
Data__Opnd storeIn;
Data__Result storeOut;
unsigned int flags;
Data__Result savedResults;
Data__Opnd savedOpnds;
} SideEffects__CallInfoDesc;
typedef struct SideEffects__CallInfoDesc* SideEffects__CallInfo;
static SideEffects__ProcInfo SideEffects__gregList;
/* function prototypes */
void SideEffects__Append(SideEffects__InfoList *list, SideEffects__ProcInfo info);
unsigned char SideEffects__Adjust_RegisteredCall(Data__Instruction instr);
SideEffects__CallInfo SideEffects__Adjust_ExamineInstructions_GetCallInfo(Data__Instruction call);
void SideEffects__Adjust_ExamineInstructions(SideEffects__ProcInfo i, Data__Region r);
void SideEffects__Adjust_PropagateSideEffects_AddToWorklist(SideEffects__ProcInfo caller, Data__Result enterPtr, Data__Opnd exitPtr, SideEffects__ProcInfo *SideEffects__Adjust_PropagateSideEffects_worklist);
void SideEffects__Adjust_PropagateSideEffects_AddSideEffect(SideEffects__ProcInfo caller, Data__Addressable var, short int attrib, Data__Opnd *SideEffects__Adjust_PropagateSideEffects_newOpnd, SideEffects__ProcInfo *SideEffects__Adjust_PropagateSideEffects_worklist);
Data__Addressable SideEffects__Adjust_PropagateSideEffects_GetDesignatorBase(Data__Usable u);
void SideEffects__Adjust_PropagateSideEffects(Data__Opnd *SideEffects__Adjust_use);
void SideEffects__Adjust_PropagateMem(void);
unsigned char SideEffects__Adjust_AdjustGSA_SameLocation(Data__Location a, Data__Location b);
Data__Result SideEffects__Adjust_AdjustGSA_Address(Data__Region region, Data__Addressable var, int pos);
void SideEffects__Adjust_AdjustGSA_AdjustResults_UpdateVar(Data__Object var, Data__Usable value, SideEffects__CallInfo *SideEffects__Adjust_AdjustGSA_AdjustResults_cinfo, Data__Instruction *SideEffects__Adjust_AdjustGSA_AdjustResults_call);
Data__Object SideEffects__Adjust_AdjustGSA_AdjustResults_LocalVarAdr(Data__Usable u);
void SideEffects__Adjust_AdjustGSA_AdjustResults_UpdateDesignator(Data__Instruction access, Data__Usable value, Data__Instruction *SideEffects__Adjust_AdjustGSA_AdjustResults_call, SideEffects__CallInfo *SideEffects__Adjust_AdjustGSA_AdjustResults_cinfo);
unsigned char SideEffects__Adjust_AdjustGSA_AdjustResults_LocalVar(Data__SymLocation l, Data__Object proc);
Data__SymLocation SideEffects__Adjust_AdjustGSA_AdjustResults_GetSymLoc(Data__Addressable var, Data__GlobalRegion greg);
unsigned char SideEffects__Adjust_AdjustGSA_AdjustResults_IsResult(Data__Opnd opnd);
unsigned char SideEffects__Adjust_AdjustGSA_AdjustResults_IsFormalParam(Data__Object callee, Data__SymLocation loc);
void SideEffects__Adjust_AdjustGSA_AdjustResults(Data__Instruction call, SideEffects__CallInfo cinfo, SideEffects__ProcInfo *SideEffects__Adjust_AdjustGSA_i);
Data__Result SideEffects__Adjust_AdjustGSA_GetFinalStore(Data__Region r, Data__Result *SideEffects__Adjust_AdjustGSA_store);
void SideEffects__Adjust_AdjustGSA_SetExitOpnd(Data__Instruction exit, Data__Opnd opnd, Data__Result store);
void SideEffects__Adjust_AdjustGSA_AdjustOperands(Data__Instruction call, SideEffects__CallInfo cinfo, SideEffects__ProcInfo *SideEffects__Adjust_AdjustGSA_i, Data__Opnd *SideEffects__Adjust_AdjustGSA_opnd, Data__Result *SideEffects__Adjust_AdjustGSA_res);
void SideEffects__Adjust_AdjustGSA(SideEffects__ProcInfo i);
void SideEffects__Adjust_RestoreLists(SideEffects__ProcInfo callee, Data__Instruction call);
/* module and type descriptors */
static const struct {
int length;
void* pad;
const char name[12];
} _n0 = {12, NULL, {"SideEffects"}};
static struct _MD SideEffects_md = {
NULL,
&Kernel__ModuleDesc_td.td,
{
NULL,
(const unsigned char*)_n0.name,
-1,
NULL
}
};
static const struct {
int length;
void* pad;
const char name[13];
} _n1 = {13, NULL, {"ProcInfoDesc"}};
static const struct {
int length;
void* pad;
_Type btypes[2];
} SideEffects__ProcInfoDesc_tdb = {
2,
NULL,
{
&Data__InfoDesc_td.td,
&SideEffects__ProcInfoDesc_td.td
}
};
static const struct {
int length;
void* pad;
const void* tbprocs[1];
} _tb0 = {0, NULL, {
NULL
}};
struct _TD SideEffects__ProcInfoDesc_td = {
NULL,
&Types__TypeDesc_td.td,
{
SideEffects__ProcInfoDesc_tdb.btypes,
_tb0.tbprocs,
(const unsigned char*)_n1.name,
&SideEffects_md.md,
1,
'0', '1',
sizeof(SideEffects__ProcInfoDesc),
NULL
}
};
static const struct {
int length;
void* pad;
const char name[13];
} _n2 = {13, NULL, {"InfoListDesc"}};
static const struct {
int length;
void* pad;
_Type btypes[1];
} SideEffects__InfoListDesc_tdb = {
1,
NULL,
{
&SideEffects__InfoListDesc_td.td
}
};
static const struct {
int length;
void* pad;
const void* tbprocs[1];
} _tb1 = {0, NULL, {
NULL
}};
struct _TD SideEffects__InfoListDesc_td = {
NULL,
&Types__TypeDesc_td.td,
{
SideEffects__InfoListDesc_tdb.btypes,
_tb1.tbprocs,
(const unsigned char*)_n2.name,
&SideEffects_md.md,
0,
'0', '1',
sizeof(SideEffects__InfoListDesc),
&SideEffects__ProcInfoDesc_td.td
}
};
static const struct {
int length;
void* pad;
const char name[13];
} _n3 = {13, NULL, {"CallInfoDesc"}};
static const struct {
int length;
void* pad;
_Type btypes[2];
} SideEffects__CallInfoDesc_tdb = {
2,
NULL,
{
&Data__InfoDesc_td.td,
&SideEffects__CallInfoDesc_td.td
}
};
static const struct {
int length;
void* pad;
const void* tbprocs[1];
} _tb2 = {0, NULL, {
NULL
}};
struct _TD SideEffects__CallInfoDesc_td = {
NULL,
&Types__TypeDesc_td.td,
{
SideEffects__CallInfoDesc_tdb.btypes,
_tb2.tbprocs,
(const unsigned char*)_n3.name,
&SideEffects_md.md,
1,
'0', '1',
sizeof(SideEffects__CallInfoDesc),
&SideEffects__InfoListDesc_td.td
}
};
/* local strings */
static const unsigned char _c0[] = "$result";
|