История изменений
Исправление byko3y, (текущая версия) :
Третьим проходом каждая функция перестраивается в SSA
И теряется часть информации о коде, главным образом о составных структурах, которые просто так в SSA никак не преобразовываются. По этой причине GCC держит SSA в виде дерева, не разворачивая его в плоскую форму, а LLVM в своем IR содержит вспомогательные инструкции, которые фронтэнд генерирует для помощи бэкэнду, потому что иначе бэкэнд не сможет разобратся в смысле кода:
https://llvm.org/docs/Frontend/PerformanceTips.html
Исправление byko3y, :
Третьим проходом каждая функция перестраивается в SSA
И теряется часть информации о коде, главным образом о составных структурах, которые просто так в SSA никак не преобразовываются. По этой причине GCC держит SSA в виде дерева, не разворачивая его в плоскую форму, а LLVM в своем IR содержит вспомогательные инструкции, которые фронтенд генерирует для помощи бэкэнду, который иначе не сможет разобратся в смысле кода:
https://llvm.org/docs/Frontend/PerformanceTips.html
Исходная версия byko3y, :
Третьим проходом каждая функция перестраивается в SSA
И теряется часть информации о коде, главным образом о составных структурах, которые просто так в SSA никак не преобразовываются. По этой причине GCC держит SSA в виде дерева, а не разворачивает в плоскую форму.