2022-11-20 05:07:22 +00:00
|
|
|
#ifndef COMPILER_INTERFERENCEGRAPH_H
|
|
|
|
#define COMPILER_INTERFERENCEGRAPH_H
|
|
|
|
|
|
|
|
#include "compiler/common.h"
|
|
|
|
|
2022-12-14 00:16:59 +00:00
|
|
|
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);
|
|
|
|
|
2022-11-20 05:07:22 +00:00
|
|
|
#endif
|