LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

Ну сделали мы анроллинг в макросе, а теперь надо ещё block transform, а потом ещё чего нибудь - так мы весь компилятор в макрос запихнём.

Да нет, компилятор уже есть для IR0, он там может себе что угодно делать (как gcc — -fdump-tree-*, то же tagbody/go для циклов). Вообще, если сравнивать типичный язык без макросов с оптимизирующим компилятором, то сравнивать с IR0, то есть лиспом без макросов и его оптимизирующим компилятором. А назначение макросов по задумке именно в расширении компилятора и добавлении специальных форм, они должны писать IR0 — делать какие-то оптимизации или нет это их дело. Я про unrolling заговорил потому что вот SBCL не делает (ни слова на все сорцы, и вообще он мало что делает с циклами по сравнению с gcc), поэтому можно делать в макросе.

Исходная версия quasimoto, :

Ну сделали мы анроллинг в макросе, а теперь надо ещё block transform, а потом ещё чего нибудь - так мы весь компилятор в макрос запихнём.

Да нет, компилятор уже есть для IR0, он там может себе что угодно делать (как gcc — -fdump-tree-*, то же tagbody/go для циклов). Вообще, если сравнивать типичный язык без макросов с оптимизирующим компилятором, то сравнивать с IR0, то есть лиспом без макросов. А назначение макросов по задумке именно в расширении компилятора и добавлении специальных форм, они должны писать IR0 — делать какие-то оптимизации или нет это их дело. Я про unrolling заговорил потому что вот SBCL не делает (ни слова на все сорцы, и вообще он мало что делает с циклами по сравнению с gcc), поэтому можно делать в макросе.