Исключение бесполезного кода (методичка) (2015), страница 2
Описание файла
PDF-файл из архива "Исключение бесполезного кода (методичка) (2015)", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Поэтому необходимо дополнительно озаботитьсяудалением недостижимого кода.3.2Удаление недостижимого кодаДля удаления недостижимого кода необходимо обойти граф потока управления в глубину (или в ширину), начиная с блока Entry. Все непосещенные в процессе обхода блоки являются недостижимыми и подлежат удалению.В рассмотренном выше примере необходимо удалить блоки B2 и B3 (см.Рис. 3)12EntryB1scanf x (1)scanf y (2)i ← 0 (3)r ← i (4)if (> x, y)goto B5 (5)elsegoto B4 (6)B4a ←x ←y ←gotox (11)y (12)a (13)B5 (15)B5i ← + i, 1 (16)it ← % i, 10 (18)if (= it, 0)goto B6 (19)elsegoto B7 (20)B6print «|» (21)goto B7 (22)B7r ← % y, x (23)y ← x (24)x ← r (25)if (> r, 0)goto B5 (26)elsegoto B8 (27)B8return y (28)ExitРис.
3: Граф потока управления после удаления недостижимого кода13Список литературы[1] Keith D. Cooper and Linda Torczon. Engineering a Compiler, Second Edition. RiceUniversity, Houston, Texas, 2011[2] Yming Zhang, Rebecca Smith, Linge Dai and Max Grossman, ImplementationoftheMarkSweepdeadcodeeliminationalgorithmhttps://yunmingzhang.files.wordpress.com/2013/12/dcereport-2.pdf14inLLVM..