|
| 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 *) |
| |