Содержание
- 2. Содержание Межпроцедурные оптимизации: Граф вызовов процедур ( call graph ) Подстановка процедур ( inline ) Частичная
- 3. Граф вызовов процедур Граф вызовов – мультиграф, вершины – процедуры. Вершины proc1, proc2 соединены ориентированном ребром
- 4. Подстановка процедур Подстановка процедуры – замена вызова процедуры на копию ее кода, связывание формальных параметров с
- 5. Подстановка процедур Трудности: Несовпадение числа формальных и фактических параметров ( функции с переменным числом параметров, нотация
- 6. Подстановка процедур Схемы подстановки – разный обход графа вызовов: Начиная с main берем процедуру и подставляем
- 7. Частичная подстановка Частичная подстановка ( partial inline) - процедуры с большим размером кода, не подходящим по
- 8. Частичная подстановка Подстановка: Если у процедуры есть разрезанная копия, то подставляем вероятную часть и оставляем вызов
- 9. Пропагатор Пропагация констант ( constant propagation) – пропагирует статически известные константные значения по представлению. Propagator
- 10. Пропагатор Пропагация выравниваний определяет для каждой операции доступа в память выровненность на определенное значение ( фортран
- 11. Клонирование процедур Клон – спецификация процедуры для определенного вызывающего контекста Клонирование подставляет вместо вызова процедуры вызов
- 12. Клонирование процедур Cloning
- 13. Замена стандартных процедур Replacing – замена вызова стандартной функции с некоторыми параметрами на эквивалентный код Это
- 14. Хвостовая рекурсия Хвостовая рекурсия – преобразование рекурсии в цикл заменой рекурсивного вызова процедуры переходом к первой
- 15. Оптимизации работы с памятью Оптимизация размещения данных в памяти замена выделения многомерного массива на одномерный. Разбор
- 16. Оптимизации работы с памятью Memory optimizations
- 17. Оптимизации работы с памятью Memory optimizations
- 18. Оптимизации работы с памятью Memory optimizations
- 19. Оптимизации работы с памятью Достаточные условия для применения: Выделение памяти через стандартные функции malloc, calloc, memalign
- 20. Анализы указателей и алиасов Результаты анализов: анализ указателей – на какие области памяти указывает каждый указатель
- 21. Анализы may-point-to и must-point-to Свойства результатов: анализ may-point-to – указатель может указывать на некоторую область памяти
- 22. Неинициализированные указатели и неадресные значения Разыменование неинициализированного указателя Некорректная семантика – завершение анализа Разыменование в правой
- 23. Неинициализированные указатели и неадресные значения Неадресные значения ( что считать инициализацией указателя) Любое присваивание в указатель
- 24. Чувствительность к потоку управления Учитывает или нет поток управления внутри анализируемых процедур ( flow-sensitive и flow-insensitive
- 25. Чувствительность к вызывающему контексту Разделение информации ( вызывающий контекст), приходящей в процедуру по разным путям исполнения
- 26. Чувствительность к вызывающему контексту Вызывающий контекст однозначно определяется путем в графе вызовов Разные пути могут давать
- 27. Модель обработки динамической памяти Вся динамическая память - один объект Создавать уникальный объект динамической памяти по
- 28. Модель обработки динамической памяти Эвристически распознавать выделение памяти ( newnode – выделение памяти)
- 29. Обработка составных объектов Различать элементы составных объектов или рассматривать как единое целое Множество локализаций – подмножество
- 30. Обработка составных объектов Соотвествие языковых типов и множества локализаций
- 31. Обработка составных объектов Некорректное использование union
- 32. Учет языковых типов Учет типа для операций доступа в память Область памяти, независимо от типа, может
- 33. Требование компиляции всей программы Необходимо наличие для анализа всей программы, за исключением возможно стандартных библиотек (
- 34. Пример эффективного анализа Анализ на основе свойства транзитивности Для отношения «алиасить» добавляется свойство транзитивности: если и
- 35. Пример точного анализа Анализ на основе ЧТФ Трасферная функция процедуры определена для всех вызывающих контекстов, результат
- 36. Анализ на основе ЧТФ Идея абстрактной интерпритации – начиная с main итерационно собирается информация о значении
- 37. Анализ на основе ЧТФ Пример Как формализовать контекст с точки зрения интересующего нас свойства указывать?
- 38. Анализ на основе ЧТФ Чтобы задать область определения ТФ используем points-to функции p->{x,y} p->{y} 1-й и
- 39. Анализ на основе ЧТФ Начальная points-to функция для main Начальная и конечная points-to функция для f
- 40. Анализ на основе ЧТФ Начальная и конечная points-to функция для f в точках вызова S3 пунктиром
- 41. Анализ на основе ЧТФ Блоки создаем только когда встречаем реальное разыменование указателя, т.е. записываем информацию не
- 42. Анализ на основе ЧТФ Неявные вызовы – включаем в область определения ЧТФ таблицу с указателями на
- 43. Анализ на основе ЧТФ Обработка рекурсии
- 45. Скачать презентацию