blob: 08dbb0034297a98dec4066d925153296011fee00 (
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
49
50
51
52
53
54
55
56
57
58
59
|
#ifndef COMPILER_ALIAS_H
#define COMPILER_ALIAS_H
#include "compiler/common.h"
#ifdef __MWERKS__
#pragma options align=mac68k
#endif
typedef struct AliasMember AliasMember;
typedef enum AliasType {
AliasType0,
AliasType1,
AliasType2
} AliasType;
struct Alias {
Alias *next;
Alias *hashNext;
AliasMember *children;
AliasMember *parents;
Object *object;
SInt32 offset;
SInt32 size;
int valuenumber;
PCode *valuepcode;
UInt32 *vec24;
int index;
AliasType type;
};
struct AliasMember {
AliasMember *nextParent;
AliasMember *nextChild;
Alias *parent;
Alias *child;
};
#ifdef __MWERKS__
#pragma options align=reset
#endif
extern Alias *worst_case;
extern Object worst_case_obj;
extern void initialize_aliases(void);
extern Alias *make_alias(Object *object, SInt32 offset, SInt32 size);
extern Alias *make_alias_set(void);
extern void add_alias_member(Alias *parent, Alias *child);
extern Alias *make_alias_set_from_IR(void);
extern void gather_alias_info(void);
extern Boolean may_alias(PCode *a, PCode *b);
extern Boolean uniquely_aliases(PCode *a, PCode *b);
extern Boolean may_alias_worst_case(PCode *pcode);
extern Boolean may_alias_object(PCode *pcode, Object *object);
extern void initialize_alias_values(void);
extern void update_alias_value(Alias *alias, PCode *pcode);
extern void update_all_alias_values(void);
#endif
|