19 assert(rtype(i->
to) ==
RTmp);
30 if (s == -1 || s ==
loadsz(l)) {
35 if (req(i->
to, l->
arg[1]) && !req(i->
to, l->
arg[0]))
48 for (u=t->
use; u!=ue; u++) {
59 err(
"slot %%%s is read but never stored to",
84 fprintf(stderr,
"\n> After memory optimization:\n");
Blk * start
Указатель на блок функции, являющийся её входной точкой
Структура, хранящая информацию об инструкциях.
Op optab[NOp]
Массив всех операций.
uint ndef
Количество блоков, в которых есть объявление переменной
Содержит информацию о переменной
void err(char *,...) __attribute__((noreturn))
Tmp * tmp
Массив используемых функцией переменных
Use * use
Содержит информацию об использовании переменной
Непосредственно информация о базовом блоке.
void printfn(Fn *, FILE *)
char name[NString]
Имя переменной
Структура, хранящая в себе информацию о функции
uint nuse
Количество блоков, в которых переменная используется
Структура, хранящая информацию об одном "использовании" переменной.