summaryrefslogtreecommitdiff
path: root/includes/compiler/IroCSE.h
blob: 4bf127c750e69b8c706848c43134e6d62546cef7 (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
#ifndef COMPILER_IROCSE_H
#define COMPILER_IROCSE_H

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

#ifdef __MWERKS__
#pragma options align=mac68k
#endif
struct IROExpr {
    Boolean x0;
    UInt16 index;
    IROLinear *linear;
    Object *x8;
    IRONode *node;
    BitVector *depends;
    IROExpr *x14;
    Boolean couldError;
    Boolean notSubable;
    IROLinear *x1A;
    VarRecord *x1E;
    IROLinear *x22;
    IROExpr *next;
};
#ifdef __MWERKS__
#pragma options align=reset
#endif

extern BitVector *IRO_Depends;
extern Boolean IRO_NotSubable;
extern Boolean IRO_IsVolatile;
extern Boolean IRO_CouldError;
extern IROExpr *IRO_FirstExpr;
extern IROExpr *IRO_LastExpr;
extern SInt32 IRO_NumExprs;

extern void IRO_FindDepends_NoAlloc(IROLinear *linear);
extern void IRO_FindDepends(IROLinear *linear);
extern void IRO_FindExpressions(BitVector *bv, Boolean flag);
extern void IRO_RemoveExpr(IROExpr *expr);
extern void IRO_ComputeAvail(void);
extern void IRO_CommonSubs(void);
extern void IRO_GenerateTopLevelExprsForSubableOperands(void);

#endif