Обзор существующих методов межпроцедурного анализа. Получение входных и выходных данных подпрограмм с помощью графа алгоритма. Описание входных и выходных данных подпрограммы в терминах фактических параметров. Определение параллелизма по графу алгоритма.
Аннотация к работе
Необходимость выполнения межпроцедурного анализа очень часто возникает на практике, в частности, при анализе параллельных свойств программ. Можно привести множество примеров задач, решаемых с использованием техники межпроцедурного анализа: определение независимости вхождений в тело подпрограммы параметров и глобальных переменных, распараллеливание циклов, содержащих вызовы подпрограмм, определение необходимых пересылок данных для вызова распределяемой подпрограммы при использовании компьютеров с распределенной памятью, поддержка корректности данных в кэш-памяти многопроцессорных систем и многие другие. Последующее развитие методов межпроцедурного анализа шло по двум направлениям: с одной стороны, уточнение методов нахождения входных и выходных данных подпрограмм, а с другой - описание найденных данных в терминах фактических параметров (обратная подстановка). Следуя [9], будем называть такие области READ и WRITE областями. Если из всей области срабатывания оператора WJ [3] вычесть все области Dk из описания графа алгоритма фрагмента по входу Ai (напомним, что точки областей Dk являются конечными точками дуг графа алгоритма данного фрагмента), то полученная область Winp будет описывать множество точек пространства итераций, в которых Ai потребляет входные для исследуемого фрагмента данные. Теперь нужно получить описание области пространства итераций Winp в пространстве элементов массива A.