Функция fillpreds — различия между версиями
Alexander (обсуждение | вклад) (Новая страница: «Функция <strong>fillpreds(Fn)</strong> - функция, реализованная в Си интерфейсе QBE. Р…») |
Admin (обсуждение | вклад) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 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>. |
== Назначение == | == Назначение == | ||
Строка 6: | Строка 6: | ||
== Исходный код == | == Исходный код == | ||
Функция <strong>fillpreds</strong> из <code>cfg.c</code> | Функция <strong>fillpreds</strong> из <code>cfg.c</code> | ||
− | /* fill predecessors information in blocks */ | + | /* fill predecessors information in blocks */ |
− | void fillpreds(Fn *f) { | + | void fillpreds(Fn *f) { |
Blk *b; | Blk *b; | ||
for (b=f->start; b; b=b->link) { | for (b=f->start; b; b=b->link) { |
Текущая версия на 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); } }