Запуск тестов
Для проверки сохранения семантики программы оптимизатором каждый тест требуется откомпилировать с оптимизацией, выполнить результат компиляции и сравнить полученную трассу с эталоном. Напомним, что мы предлагаем в качестве эталона использовать трессу неоптимизированной версии соответствующего теста.
Итак, процесс запуска тестов и анализа результатов состоит из следующих шагов:
-
Тестирование оптимизатора:
- компиляция тестов с включенной целевой оптимизацией.
-
Ко-тестирование:
- запуск результатов компиляции на выполнение;
- сохранение получившейся трассы (тестовая трасса).
-
Получеие эталона:
- компиляция теста с отключенной целевой оптимизацией;
- запуск результатов компиляции;
- сохранение получившейся трассы (эталонная трасса).
-
Запуск оракула:
- cравнение тестовой трассы с эталоном;
- вынесение вердикта о сохранении семантики теста во время оптимизации.
Тестируемый оптимизатор признается сохраняющим семантику программ в соответствии с выбранным критерием тестового покрытия тогда и только тогда, когда оракул вынес положительные вердикты для всех тестов.