LINUX.ORG.RU

LLVM. Зачем он вообще нужен?

 ,


3

6

Я понимаю, зачем его используют: чтобы не писать 100500 раз в каждом компиляторе одни и те же алгоритмы оптимизации.

Я не понимаю, почему не использовать просто компиляцию через Си или Си++. Оптимизации сделает компилятор Си. Семантика у LLVM всё равно совпадает с Си, по объёму кода компилятора тоже выигрыша практически нет. Зато если использовать Си, можно использовать любой из компиляторов Си и компилировать для платформ, для которых нет реализации LLVM.

★★★★★
Ответ на: комментарий от anonymous

Если не важно, то чего ты бампаешь тред? Сиди себе в обнимку со своей панамкой и всем, что в неё понапихано. Разве что, я бы посоветовал тебе добавить в панамку учебник англюсика.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Если не важно, то чего ты бампаешь тред? Сиди себе в обнимку со своей панамкой и всем, что в неё понапихано. Разве что, я бы посоветовал тебе добавить в панамку учебник англюсика.

англюсика

Ловите тугосерю.

anonymous
()
Ответ на: комментарий от monk

Тебе обязательно подтверждение от меня?

Подтверждение чего?

Тогда дождался.

Я жду логического объяснения причин, по которым ты отказал программе из поста в принадлежности к strictly conforming. Пока не вижу.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Я жду логического объяснения причин, по которым ты отказал программе из поста в принадлежности к strictly conforming. Пока не вижу.

Вы утомили уже своей тупостью и упрямством. Ваш пример не strictly conforming потому что:

A strictly conforming program shall not produce output dependent on any unspecified, undefined, or implementation-defined behavior.

Signed overflow нарушает этот пункт. Поиск этих строчек в С стандарте оставляю вам как домашнее задание, хоть в стандарт загляните.

Obezyan
()
Ответ на: комментарий от Obezyan

Вы утомили уже своей тупостью и упрямством. Ваш пример не strictly conforming потому что

Его поинт в том, что там нет вывода, поэтому на UB насрать. Но, как мы выяснили, вывод там есть :)))))))))

anonymous
()

LLVM - это виртуальная машина, созданная корпорациями, чтобы через виртуальную машину отделить программы от железа и вытеснить gcc.

anonymous
()
11 ноября 2025 г.

недостатки Си как языка (а следовательно и С++) обсуждались многократно. просто некоторые операции и типы данных в Си мешают или сильно затрудняют некоторые оптимизации. точнее чтоб определить возможно ли применить эти оптимизации компилятору надо очень замудрено проверять зависимости чуть ли не интерпретируя программу по шагам. алиасинг указателей и прочее. парадокс в том что если использовать более строго типизированный язык с урезанными возможностями то компилятор потом сможет оптимизировать лучше. да да те самые языки Паскаль или МЛ семейства. или там Фортран современный. не зря же физики на нем пишут до сих пор - он чутка лучше оптимизирует чем Си. и никакой магии, просто авторы этих языков думали более математически точно. так что копилятору не надо потом гадать что имелось ввиду. в этом плане libFirm наверное проще всего как бэкэнд а не Си. в конце концов SSA это почти функциональный язык, типа МЛ. да да вы правильно поняли любой современный компилятор на самом деле переводит любой код любого моднявого языка в МЛ-подобный внутренний SSA язык и далее работает уже с ним. сюрприз.

anonymous
()