|
struct | Target |
|
struct | BSet |
|
struct | Ref |
| Структура, хранящая описание переменных (более подробное описание переменной ищите в Tmp). Для получения информации об имени этой переменной требуется писать конструкцию вида: fn->tmp[blk->ins->to.val].name - здесь будет получено имя переменной, в которую записывается результат операции, стоящей первой в списке инструкций ins (Ins) блока blk (Blk). Подробнее...
|
|
struct | Op |
| Структура, хранящая информацию об операции. Подробнее...
|
|
struct | Ins |
| Структура, хранящая информацию об инструкциях. Подробнее...
|
|
struct | Phi |
|
struct | Blk |
| Непосредственно информация о базовом блоке. Подробнее...
|
|
struct | Use |
| Структура, хранящая информацию об одном "использовании" переменной. Подробнее...
|
|
struct | Alias |
|
struct | Tmp |
| Содержит информацию о переменной Подробнее...
|
|
struct | Con |
|
struct | Addr |
|
struct | Fn |
| Структура, хранящая в себе информацию о функции Подробнее...
|
|
struct | Typ |
|
struct | Typ::Field |
|
struct | Dat |
|
|
enum | { NString = 32,
NPred = 63,
NIns = 1 << 20,
NAlign = 3,
NField = 32,
NBit = CHAR_BIT * sizeof(bits)
} |
|
enum | { RXX = 0,
Tmp0 = NBit
} |
|
enum | { RTmp,
RCon,
RType,
RSlot,
RCall,
RMem
} |
|
enum | CmpI { Cieq,
Cine,
Cisge,
Cisgt,
Cisle,
Cislt,
Ciuge,
Ciugt,
Ciule,
Ciult,
NCmpI
} |
| Сравнения для 32 битных целых чисел. Подробнее...
|
|
enum | CmpF { Cfeq,
Cfge,
Cfgt,
Cfle,
Cflt,
Cfne,
Cfo,
Cfuo,
NCmpF,
NCmp = NCmpI + NCmpF
} |
| Сравнения для чисел типа float. Подробнее...
|
|
enum | O {
Oxxx,
Oadd,
Osub,
Odiv,
Orem,
Oudiv,
Ourem,
Omul,
Oand,
Oor,
Oxor,
Osar,
Oshr,
Oshl,
Oceqw,
Ocnew,
Ocsgew,
Ocsgtw,
Ocslew,
Ocsltw,
Ocugew,
Ocugtw,
Oculew,
Ocultw,
Oceql,
Ocnel,
Ocsgel,
Ocsgtl,
Ocslel,
Ocsltl,
Ocugel,
Ocugtl,
Oculel,
Ocultl,
Oceqs,
Ocges,
Ocgts,
Ocles,
Oclts,
Ocnes,
Ocos,
Ocuos,
Oceqd,
Ocged,
Ocgtd,
Ocled,
Ocltd,
Ocned,
Ocod,
Ocuod,
Ostoreb,
Ostoreh,
Ostorew,
Ostorel,
Ostores,
Ostored,
Oloadsb,
Oloadub,
Oloadsh,
Oloaduh,
Oloadsw,
Oloaduw,
Oload,
Oextsb,
Oextub,
Oextsh,
Oextuh,
Oextsw,
Oextuw,
Oexts,
Otruncd,
Ostosi,
Odtosi,
Oswtof,
Osltof,
Ocast,
Oalloc4,
Oalloc8,
Oalloc16,
Ovaarg,
Ovastart,
Ocopy,
Onop,
Oaddr,
Oswap,
Osign,
Osalloc,
Oxidiv,
Oxdiv,
Oxcmp,
Oxtest,
Oacmp,
Oacmn,
Oafcmp,
Opar,
Oparc,
Opare,
Oarg,
Oargc,
Oarge,
Ocall,
Ovacall,
Oflagieq,
Oflagine,
Oflagisge,
Oflagisgt,
Oflagisle,
Oflagislt,
Oflagiuge,
Oflagiugt,
Oflagiule,
Oflagiult,
Oflagfeq,
Oflagfge,
Oflagfgt,
Oflagfle,
Oflagflt,
Oflagfne,
Oflagfo,
Oflagfuo,
NOp
} |
| Перечисление всех операций QBE IL. Подробнее...
|
|
enum | J {
Jxxx,
Jret0,
Jretw,
Jretl,
Jrets,
Jretd,
Jretc,
Jjmp,
Jjnz,
Jjfieq,
Jjfine,
Jjfisge,
Jjfisgt,
Jjfisle,
Jjfislt,
Jjfiuge,
Jjfiugt,
Jjfiule,
Jjfiult,
Jjffeq,
Jjffge,
Jjffgt,
Jjffle,
Jjfflt,
Jjffne,
Jjffo,
Jjffuo,
NJmp
} |
| Перечисление всех прыжков QBE IL. Подробнее...
|
|
enum | { Ocmpw = Oceqw,
Ocmpw1 = Ocultw,
Ocmpl = Oceql,
Ocmpl1 = Ocultl,
Ocmps = Oceqs,
Ocmps1 = Ocuos,
Ocmpd = Oceqd,
Ocmpd1 = Ocuod,
Oalloc = Oalloc4,
Oalloc1 = Oalloc16,
Oflag = Oflagieq,
Oflag1 = Oflagfuo,
NPubOp = Onop,
Jjf = Jjfieq,
Jjf1 = Jjffuo
} |
|
enum | Class { Kx = -1,
Kw,
Kl,
Ks,
Kd
} |
|
enum | { NoAlias,
MayAlias,
MustAlias
} |
|
enum | { FEnd,
Fb,
Fh,
Fw,
Fl,
Fs,
Fd,
FPad,
FTyp
} |
|
enum | Pool { Pheap,
Pfn
} |
|
|
uint32_t | hash (char *) |
|
void | die_ (char *, char *,...) __attribute__((noreturn)) |
|
void * | emalloc (size_t) |
|
void * | alloc (size_t) |
|
void | freeall (void) |
|
void * | vnew (ulong, size_t, Pool) |
|
void | vfree (void *) |
|
void | vgrow (void *, ulong) |
|
uint32_t | intern (char *) |
|
char * | str (uint32_t) |
|
int | argcls (Ins *, int) |
|
int | isreg (Ref) |
|
int | iscmp (int, int *, int *) |
|
void | emit (int, int, Ref, Ref, Ref) |
|
void | emiti (Ins) |
|
void | idup (Ins **, Ins *, ulong) |
|
Ins * | icpy (Ins *, Ins *, ulong) |
|
int | cmpop (int) |
|
int | cmpneg (int) |
|
int | clsmerge (short *, short) |
|
int | phicls (int, Tmp *) |
|
Ref | newtmp (char *, int, Fn *) |
|
void | chuse (Ref, int, Fn *) |
|
Ref | getcon (int64_t, Fn *) |
|
void | addcon (Con *, Con *) |
|
void | blit (Ref, uint, Ref, uint, Fn *) |
|
void | dumpts (BSet *, Tmp *, FILE *) |
|
void | bsinit (BSet *, uint) |
|
void | bszero (BSet *) |
|
uint | bscount (BSet *) |
|
void | bsset (BSet *, uint) |
|
void | bsclr (BSet *, uint) |
|
void | bscopy (BSet *, BSet *) |
|
void | bsunion (BSet *, BSet *) |
|
void | bsinter (BSet *, BSet *) |
|
void | bsdiff (BSet *, BSet *) |
|
int | bsequal (BSet *, BSet *) |
|
int | bsiter (BSet *, int *) |
|
void | parse (FILE *, char *, void(*)(Dat *), void(*)(Fn *)) |
| Парсит файл с программой на QBE IL. Подробнее...
|
|
void | printfn (Fn *, FILE *) |
|
void | printref (Ref, Fn *, FILE *) |
|
void | err (char *,...) __attribute__((noreturn)) |
|
Blk * | blknew (void) |
|
void | edgedel (Blk *, Blk **) |
|
void | fillpreds (Fn *) |
|
void | fillrpo (Fn *) |
|
void | filldom (Fn *) |
|
int | sdom (Blk *, Blk *) |
|
int | dom (Blk *, Blk *) |
|
void | fillfron (Fn *) |
|
void | loopiter (Fn *, void(*)(Blk *, Blk *)) |
|
void | fillloop (Fn *) |
|
void | simpljmp (Fn *) |
|
void | memopt (Fn *) |
|
void | fillalias (Fn *) |
|
int | alias (Ref, int, Ref, int, int *, Fn *) |
|
int | escapes (Ref, Fn *) |
|
int | loadsz (Ins *) |
|
int | storesz (Ins *) |
|
void | loadopt (Fn *) |
|
void | filluse (Fn *) |
| Заполняет информацию об использовании переменных в функции Подробнее...
|
|
void | ssa (Fn *) |
|
void | ssacheck (Fn *) |
|
void | simpl (Fn *) |
|
void | copy (Fn *) |
|
void | fold (Fn *) |
|
void | liveon (BSet *, Blk *, Blk *) |
|
void | filllive (Fn *) |
|
void | fillcost (Fn *) |
|
void | spill (Fn *) |
|
void | rega (Fn *) |
|
void | gasemitdat (Dat *, FILE *) |
|
int | gasstash (void *, int) |
|
void | gasemitfin (FILE *) |
|