Функция fillpreds — различия между версиями
Alexander (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | Функция <strong>fillpreds(Fn)</strong> - функция, реализованная в [[Си интерфейс | Си интерфейсе]] [[QBE]]. Располагается в файле <code>cfg.c</code> и "подключается" в <code>[[ | + | Функция <strong>fillpreds(Fn)</strong> - функция, реализованная в [[Си-интерфейс | Си интерфейсе]] [[QBE]]. Располагается в файле <code>cfg.c</code> и "подключается" в <code>[[ Си-интерфейс | all.h]]</code>. |
== Назначение == | == Назначение == | ||
Текущая версия на 15:09, 6 апреля 2018
Функция fillpreds(Fn) - функция, реализованная в Си интерфейсе QBE. Располагается в файле cfg.c и "подключается" в all.h.
Назначение[править]
fillpreds осуществляет заполнение полей pred, npred, visit во всех блоках функции.
Исходный код[править]
Функция fillpreds из cfg.c
/* fill predecessors information in blocks */
void fillpreds(Fn *f) {
Blk *b;
for (b=f->start; b; b=b->link) {
b->npred = 0;
b->pred = 0;
}
for (b=f->start; b; b=b->link) {
if (b->s1)
b->s1->npred++;
if (b->s2 && b->s2 != b->s1)
b->s2->npred++;
}
for (b=f->start; b; b=b->link) {
if (b->s1)
addpred(b, b->s1);
if (b->s2 && b->s2 != b->s1)
addpred(b, b->s2);
}
}