summaryrefslogtreecommitdiff
path: root/includes/compiler/InterferenceGraph.h
blob: 8fa44a1bc4d0f0d6f37036ecfdcd0c66438f8c0f (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
#ifndef COMPILER_INTERFERENCEGRAPH_H
#define COMPILER_INTERFERENCEGRAPH_H

#include "compiler/common.h"

enum {
    fSpilled = 1,
    fPushed = 2,
    fCoalesced = 4,
    fCoalescedInto = 8,
    fPairHigh = 0x10,
    fPairLow = 0x20,
    fIGNode40 = 0x40
};

#ifdef __MWERKS__
#pragma options align=mac68k
#endif
typedef struct IGNode {
    struct IGNode *next;
    Object *spillTemporary;
    PCode *instr8;
    int spillCost;
    short x10;
    short x12;
    short x14;
    UInt16 flags;
    short arraySize;
    short array[1];
} IGNode;
#ifdef __MWERKS__
#pragma options align=reset
#endif

extern IGNode **interferencegraph;
extern Boolean coalesced_nregisters;

extern int interferes(UInt32 a, UInt32 b);
extern void buildinterferencegraph(Object *proc);

#endif