Функция fillpreds

Материал из Compilers Wiki
Версия от 09:27, 26 марта 2018; Alexander (обсуждение | вклад) (Новая страница: «Функция <strong>fillpreds(Fn)</strong> - функция, реализованная в Си интерфейсе QBE. Р…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Функция 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);
	}
}