summaryrefslogtreecommitdiff
path: root/includes/compiler/IROUseDef.h
blob: 829a396172ebe1fad778200f5a0827ed739f3d3b (plain)
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
#ifndef COMPILER_IROUSEDEF_H
#define COMPILER_IROUSEDEF_H

#include "compiler/IrOptimizer.h"
#include "compiler/BitVector.h"
#include "compiler/enode.h"

#ifdef __MWERKS__
#pragma options align=mac68k
#endif
struct IROUse {
    SInt32 index;
    IRONode *node;
    IROLinear *linear;
    VarRecord *var;
    IROUse *globalnext;
    IROUse *varnext;
    BitVector *x18;
    UInt16 x1C;
};
struct IRODef {
    SInt32 index;
    IRONode *node;
    IROLinear *linear;
    VarRecord *var;
    IRODef *globalnext;
    IRODef *varnext;
    UInt16 x18;
    Boolean x1A;
    Boolean x1B;
    Boolean x1C;
    Boolean x1D;
};
#ifdef __MWERKS__
#pragma options align=reset
#endif

extern ENodeType IRO_NonAssignmentOp[MAXEXPR];
extern IROUse *IRO_FirstVarUse;
extern IROUse *IRO_LastVarUse;

extern CInt64 IRO_GetSelfAssignmentVal(IROLinear *linear);
extern void IRO_InitializeNonAssignmentOpArray(void);
extern void IRO_InitializeAssignmentFoldingFunctionArray(void);
extern Boolean IRO_UseDef(Boolean optDeadAssignments, Boolean optPropagation);
extern void IRO_SplitLifetimes(void);

#endif