<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">mais</journal-id><journal-title-group><journal-title xml:lang="ru">Моделирование и анализ информационных систем</journal-title><trans-title-group xml:lang="en"><trans-title>Modeling and Analysis of Information Systems</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-1015</issn><issn pub-type="epub">2313-5417</issn><publisher><publisher-name>Yaroslavl State University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.18255/1818-1015-2013-2-166-177</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-214</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Оригинальные статьи</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>Articles</subject></subj-group></article-categories><title-group><article-title>Построение универсального линеаризованного графа потока управления для использования в статическом анализе кода алгоритмов</article-title><trans-title-group xml:lang="en"><trans-title>The Construction of an Universal Linearized Control Flow Graph for Static Code Analysis of Algorithms</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Битнер</surname><given-names>Вильгельм Александрович</given-names></name><name name-style="western" xml:lang="en"><surname>Bitner</surname><given-names>V. A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>аспирант кафедры информатики,</p><p>141700, Московская область, г. Долгопрудный, Институтский переулок, 9</p></bio><bio xml:lang="en"><p>аспирант кафедры информатики,</p><p>9 Institutskiy lane, Dolgoprudny city, Moscow Region, 141700, Russia</p></bio><email xlink:type="simple">vbitner87@gmail.com</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Заборовский</surname><given-names>Никита Владимирович</given-names></name><name name-style="western" xml:lang="en"><surname>Zaborovsky</surname><given-names>N. V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>лектор кафедры информатики,</p><p>141700, Московская область, г. Долгопрудный, Институтский переулок, 9</p></bio><bio xml:lang="en"><p>лектор кафедры информатики,</p><p>9 Institutskiy lane, Dolgoprudny city, Moscow Region, 141700, Russia</p></bio><email xlink:type="simple">nzaborovsky@parallels.com</email><xref ref-type="aff" rid="aff-2"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Московский физико-технический институт (государственный университет);&#13;
Научно-технический центр ИБМ</institution><country>Россия</country></aff><aff xml:lang="en"><institution>MIPT, Informatics Department</institution><country>Russian Federation</country></aff></aff-alternatives><aff-alternatives id="aff-2"><aff xml:lang="ru"><institution>Московский физико-технический институт (государственный университет);&#13;
ООО «Параллелз»</institution><country>Россия</country></aff><aff xml:lang="en"><institution>MIPT, Informatics Department</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2013</year></pub-date><pub-date pub-type="epub"><day>20</day><month>04</month><year>2013</year></pub-date><volume>20</volume><issue>2</issue><fpage>166</fpage><lpage>177</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Битнер В.А., Заборовский Н.В., 2013</copyright-statement><copyright-year>2013</copyright-year><copyright-holder xml:lang="ru">Битнер В.А., Заборовский Н.В.</copyright-holder><copyright-holder xml:lang="en">Bitner V.A., Zaborovsky N.V.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.mais-journal.ru/jour/article/view/214">https://www.mais-journal.ru/jour/article/view/214</self-uri><abstract><p>В работе рассматривается вариант построения универсального линеаризованного графа потока управления, архитектурно-независимого и пригодного для описания программы любого языка программирования высокого уровня. Практическая польза данного графа заключается в возможности быстрого и оптимального поиска уникальных путей исполнения, что может быть особенно ценно в методах статического анализа кода алгоритмов с целью поиска в них состояния гонки («race condition»). В качестве технического средства для построения линеаризованного графа управления используется оптимизирующий компилятор CLANG&amp;LLVM. В работе проводится анализ попроцедурных оптимизаций компилятора LLVM, трансформация промежуточного представления которых приводит как к сокращению количества инструкций условного и безусловного перехода в коде, так и к удалению или упрощению целых циклов и условных конструкций. Результат анализа, приведенный в работе, позволил выявить наиболее эффективную линейку оптимизаций компилятора LLVM, которая приводит к существенной линеаризации графа потока управления, что было продемонстрировано на примере кода взаимоисключающего алгоритма Петерсона для 2 потоков.</p></abstract><trans-abstract xml:lang="en"><p>This paper presents the description of a possible way to build the universal linearized control flow graph which is supposed to be architecture-independent and applicable to the description of any high level language programs. The practical usefulness of the graph considered is the existence of the fast and optimal search of the unique execution paths that is valuable in the methods of static code analysis of algorithms for race condition search. Optimizing compiler CLANG&amp;LLVM is used as a technical tool for building a linearized control flow graph. The analysis of LLVM compiler procedural optimizations is carried out in the article. Transformations of intermediate representation of those optimizations result in reduction of the number of instructions responsible for conditional or unconditional branches in the code as well as the elimination or simplification of the whole loops and conditional constructions. The results of the analysis performed in the paper allowed revealing the most effective optimizations line of the LLVM compiler, which leads to a significant linearization of the control flow graph. That fact was demonstrated by the example code of the Peterson mutual execution algorithm for 2 threads.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>состояние гонки</kwd><kwd>статический анализ</kwd><kwd>многопоточные алгоритмы</kwd><kwd>SSA</kwd><kwd>оптимизирующий компилятор</kwd></kwd-group><kwd-group xml:lang="en"><kwd>race condition</kwd><kwd>static analysis</kwd><kwd>multithreaded algorithms</kwd><kwd>SSA</kwd><kwd>optimizing compiler</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Дроздов А.Ю. Компонентный подход к построению оптимизирующих компиляторов: автореф. дис. ... д-ра техн. наук: 05.13.11. М., 2010. 50 с. (Drozdov A.Yu. Komponentny podkhod k postroeniyu optimiziruyushchikh kompilyatorov: avtoref. dis. ... d-ra tekhn. nauk: 05.13.11. Moskva, 2010. 50 s. [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Дроздов А.Ю. Компонентный подход к построению оптимизирующих компиляторов: автореф. дис. ... д-ра техн. наук: 05.13.11. М., 2010. 50 с. (Drozdov A.Yu. Komponentny podkhod k postroeniyu optimiziruyushchikh kompilyatorov: avtoref. dis. ... d-ra tekhn. nauk: 05.13.11. Moskva, 2010. 50 s. [in Russian]).</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Ахо А.В., Сети Р., Ульман Д.Д. Компиляторы: принципы, технологии и инструменты. М.: Вильямс, 2003. 768 c. (English transl.: Compilers: Principles, Techniques, and Tools / Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, 1986.)</mixed-citation><mixed-citation xml:lang="en">Ахо А.В., Сети Р., Ульман Д.Д. Компиляторы: принципы, технологии и инструменты. М.: Вильямс, 2003. 768 c. (English transl.: Compilers: Principles, Techniques, and Tools / Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, 1986.)</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Заборовский Н.В. Расчетная модель нахождения состояний гонок в многопоточных алгоритмах: дис. ... канд. физ.-мат. наук: 05.13.18. М., 2011. 104 с. (Zaborovsky N.V. Raschetnaya model nakhozhdeniya sostoyany gonok v mnogopotochnykh algoritmakh: dis. ... kand. fiz.-mat. nauk: 05.13.18. Moskva, 2011. 104 s. [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Заборовский Н.В. Расчетная модель нахождения состояний гонок в многопоточных алгоритмах: дис. ... канд. физ.-мат. наук: 05.13.18. М., 2011. 104 с. (Zaborovsky N.V. Raschetnaya model nakhozhdeniya sostoyany gonok v mnogopotochnykh algoritmakh: dis. ... kand. fiz.-mat. nauk: 05.13.18. Moskva, 2011. 104 s. [in Russian]).</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Дроздов А.Ю., Новиков С.В., Шилов В.В. Эффективный алгоритм преобразования потока управления в поток данных // Приложение к журналу “Информационные технологии”. 2005. № 2. С. 24–31 (Drozdov A.Yu., Novikov S.V., Shilov V.V. Effektivny algoritm preobrazovaniya potoka upravleniya v potok dannykh // Prilozhenie k zhurnalu "Informatsionnye tekhnologii". 2005. № 2. S. 24–31 [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Дроздов А.Ю., Новиков С.В., Шилов В.В. Эффективный алгоритм преобразования потока управления в поток данных // Приложение к журналу “Информационные технологии”. 2005. № 2. С. 24–31 (Drozdov A.Yu., Novikov S.V., Shilov V.V. Effektivny algoritm preobrazovaniya potoka upravleniya v potok dannykh // Prilozhenie k zhurnalu "Informatsionnye tekhnologii". 2005. № 2. S. 24–31 [in Russian]).</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">LLVM API Documentation [Электронный ресурс]. Режим дост.: http://llvm.org/docs/doxygen/html/IfConversion_8cpp.html</mixed-citation><mixed-citation xml:lang="en">LLVM API Documentation [Электронный ресурс]. Режим дост.: http://llvm.org/docs/doxygen/html/IfConversion_8cpp.html</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Дроздов А.Ю., Новиков С.В. Исследование методов преобразования программы в предикатную форму для архитектур с явно выраженной параллельностью // Компьютеры в учебном процессе. 2005. № 5 (Drozdov A.Yu., Novikov SV. Issledovanie metodov preobrazovaniya programmy v predikatnuyu formu dlya arkhitektur s yavno vyrazhennoy parallelnostyu // Kompyutery v uchebnom protsesse. 2005. № 5 [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Дроздов А.Ю., Новиков С.В. Исследование методов преобразования программы в предикатную форму для архитектур с явно выраженной параллельностью // Компьютеры в учебном процессе. 2005. № 5 (Drozdov A.Yu., Novikov SV. Issledovanie metodov preobrazovaniya programmy v predikatnuyu formu dlya arkhitektur s yavno vyrazhennoy parallelnostyu // Kompyutery v uchebnom protsesse. 2005. № 5 [in Russian]).</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Muchnick Steven S. Advanced Compiler Design and Implementation, San Francisco: Morgan Kauffman, 1997.</mixed-citation><mixed-citation xml:lang="en">Muchnick Steven S. Advanced Compiler Design and Implementation, San Francisco: Morgan Kauffman, 1997.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Bacon D.F., Graham S.L., Sharp O.J. Compiler transformations for high performance computing // ACM Computing Surveys. 1994. 26(4). P. 345–420.</mixed-citation><mixed-citation xml:lang="en">Bacon D.F., Graham S.L., Sharp O.J. Compiler transformations for high performance computing // ACM Computing Surveys. 1994. 26(4). P. 345–420.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">LLVM’s Analysis and Transform Passes [Электронный ресурс]. Режим дост.: http://llvm.org/docs/Passes.html</mixed-citation><mixed-citation xml:lang="en">LLVM’s Analysis and Transform Passes [Электронный ресурс]. Режим дост.: http://llvm.org/docs/Passes.html</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Дроздов А.Ю., Степаненков А.М. Методы комбинирования алгоритмов анализа и оптимизаций в современных оптимизирующих компиляторах // Компьютеры в учебном процессе. 2004. №11. С. 3–12 (Drozdov A.Yu., Stepanenkov A.M. Metody kombinirovaniya algoritmov analiza i optimizatsy v sovremennykh optimiziruyushchikh kompilyatorakh // Kompyutery v uchebnom protsesse. 2004. №11. S. 3–12 [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Дроздов А.Ю., Степаненков А.М. Методы комбинирования алгоритмов анализа и оптимизаций в современных оптимизирующих компиляторах // Компьютеры в учебном процессе. 2004. №11. С. 3–12 (Drozdov A.Yu., Stepanenkov A.M. Metody kombinirovaniya algoritmov analiza i optimizatsy v sovremennykh optimiziruyushchikh kompilyatorakh // Kompyutery v uchebnom protsesse. 2004. №11. S. 3–12 [in Russian]).</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Медведев О.В. Линеаризация графа потока управления c учётом результатов профилирования // Системное программирование. 2006. Т. 2, №1. С. 25–47 (Medvedev O.V.</mixed-citation><mixed-citation xml:lang="en">Медведев О.В. Линеаризация графа потока управления c учётом результатов профилирования // Системное программирование. 2006. Т. 2, №1. С. 25–47 (Medvedev O.V.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Linearizatsiya grafa potoka upravleniya s uchetom rezultatov profilirovaniya // Sistemnoe programmirovanie. 2006. T. 2, № 1. S. 25–47 [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Linearizatsiya grafa potoka upravleniya s uchetom rezultatov profilirovaniya // Sistemnoe programmirovanie. 2006. T. 2, № 1. S. 25–47 [in Russian]).</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Кудрин М.Ю., Прокопенко А.С., Тормасов А.Г. Метод нахождения состояний гонки в потоках, работающих на разделяемой памяти // Сборник научных трудов МФТИ. М.: МФТИ, 2009. № 4. Том 1. С. 181–201 (Kudrin M.Yu., Prokopenko A.S., Tormasov A.G. Metod nakhozhdeniya sostoyany gonki v potokakh, rabotayushchikh na razdelyaemoy pamyati // Sbornik nauchnykh trudov MFTI. Moskva: MFTI, 2009. № 4. Tom 1. S. 181–201 [in Russian]).</mixed-citation><mixed-citation xml:lang="en">Кудрин М.Ю., Прокопенко А.С., Тормасов А.Г. Метод нахождения состояний гонки в потоках, работающих на разделяемой памяти // Сборник научных трудов МФТИ. М.: МФТИ, 2009. № 4. Том 1. С. 181–201 (Kudrin M.Yu., Prokopenko A.S., Tormasov A.G. Metod nakhozhdeniya sostoyany gonki v potokakh, rabotayushchikh na razdelyaemoy pamyati // Sbornik nauchnykh trudov MFTI. Moskva: MFTI, 2009. № 4. Tom 1. S. 181–201 [in Russian]).</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
