LINUX.ORG.RU

LLVM 3.4

 ,


0

5

Спустя 6 месяцев разработки было объявлено об очередном релизе LLVM. Этот релиз включает в себя большое количество изменений. Основные изменения:

  • clang поддерживает все возможности текущего рабочего драфта стандарта C++, временно называемого C++1y;
  • значительно улучшена поддержка С++ статическим анализатором;
  • clang включает новые возможности:
    • инструмент, называемый «clang-format» который может быть использован IDE или текстовым редактором для автоформатирования вашего кода в соответствии со встроенными стилями;
    • новый драйвер разработанный для совместимости с Visual Studio на Windows (экспериментальная поддержка).
  • значительный прирост производительности в кодогенераторе;
  • автоматическая векторизация циклов теперь включается при -Os и -O2 в дополнение к -O3 (для каждого уровня включаются, соответственным образом настроенные, эвристики);
  • автоматическая векторизация SLP («straight-line code») теперь тоже включается по умолчанию;
  • платформа R600 поддерживается по умолчанию (вместо экспериментальной поддержки);
  • несколько больших улучшений качества кода и времени генерации в кодогенераторе для PowerPC;
  • clang -O4 больше не включает link-time оптимизацию по умолчанию. LTO доступно с флагом -flto и может быть включено при любом уровне оптимизации. Старое поведение -O4 можно получить с помощью «clang -O3 -flto»;
  • llvm 3.4 будет последним релизом который будет собираться компилятором C++'98. Следующие релизы будут требовать встроенную поддержку С++'11 от компилятора.

LLVM 3.4 - это результат работы невероятного числа людей работавших вместе последние 6 месяцев, но релиз был бы невозможен без нашей команды добровольцев. Благодарности Bill Wendling за его работу по выпуску релиза, а также тестерам: Arnaud A. de Grandmaison, Ben Pope, Dimitry Andric, Duncan Sands, Erik Verbruggen, Hans Wennborg, Nikola Smiljanic, Paweł Worach, Rafael Espíndola, Renato Golin, Sebastian Dreßler, Sylvestre Ledru, and Tom Stellard.

Release Notes

Скачать

>>> Подробности

★★★★★

Проверено: DoctorSinus ()

Вообще, LLVM нужен, а вот Clang как-то не очень (как и вообще сишечка и плюсики). Единственный смысл Clang - в сборке самого LLVM.

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

Предлагаешь низкоуровщину на асме фигарить?

Посмотри, сколько высокоуровневых языков с LLVM-бекэндом, начиная с Хаскелля и заканчивая всякими там Rust-ами. Зачем асм и сишечка?

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

Таки были времена тоталитаризма и запрета анонимуса... Светлое время. Тогда и страницы были светлее и число их было выше.

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

ЗЫ: а сам LLVM по большей части написан на специальном DSL (см. TableGen).

anonymous ()

Выкинул анонимусов из чатика, а то мы так действительно до второй страницы не доползем.

Ограничения по шкворцу нет, регистрация — пять минут времени :)

DoctorSinus ★★★★★ ()

clang рулит и педалит! Я на санитайзеры всё нарадоваться не могу, раньше было немыслимо запустить код под инструментарием на нагруженном сервере (привет тооормозному valgrind!). Сейчас это реальность :)

Reset ★★★★★ ()

llvm 3.4 будет последним релизом который будет содержать компилятор C++'98. Следующие релизы будут требовать встроенную поддержку С++'11

Ура!

maverik ★★ ()

таки LTO им еще пилить надо (не всегда линкует то, что с gcc собирается), а в остальном - хороший релиз, если раньше можно было увидеть креши компилятора и ошибки при использовании С++11, то сейчас все работает как часы

wota ★★ ()

Жаль, что около-проприетарная лицензия, цветные предупреждения очень даже ничего (для большего он и не годится).

clang включает новые возможности:
инструмент, называемый «clang-format» который может быть использован IDE или текстовым редактором для автоформатирования вашего кода в соответствии со встроенными стилями;

А почему еще нет сканера QR кодов?

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

х.з., в clang 3.0 из 12.04LTS они отсутствуют. Я использую clang 3.3

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

Какая нахер разница какая лицензия? Радуйся что хоть какая-то альтернатива гцц есть. BTW, в своих проектах использую оба компилятора. Плюс шланг можно использовать для настройки юзабельной реализации автокамплита в емаксе.

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

А зачем в clang clang-format, indent лицензией не подходит?

затем, что clang умеет еще и C++ с Obj-C, а еще clang-format не сфейлится при парсинге кода и обработке макросов

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

Лицензия достаточно важна. Это и религиозные вопросы и, что более важно, жизнеспособность проекта в будущем.

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

Какая нахер разница какая лицензия?

Как отметили выше, от лицензии зависит жизнеспособность проекта. У !GPL проектов она (жизнеспособность) гораздо ниже, чем у GPL проектов.

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

Да это понятно, я к тому, что бесят высказывания в духе, если лицензия (любой один параметр) - г-но, то и проект г-но. Нужно быть на уровне писаки хэлоувордов/факториалов на хацкеле, чтобы так рассуждать.

nerdogeek ()
Последнее исправление: nerdogeek (всего исправлений: 1)
Ответ на: комментарий от DoctorSinus

Есть чуть модифицнуть хаскель (расширенными инструкциями какими-нибудь), то почему бы и нет? Но это фантазии, а вон некросовт написали свою ОСь на сисярпе - и загрузчик и еще что-то, ведь просто высокоуровневый язык навернули низкоуровневщиной.

А что плохого использовать чуть чуть сишечки для самых азов-низов? Когда говорят плюсики не нужны, то подразумевают что в некоторых участках чуть чуть нужно, а в целом - нет ;)

I-Love-Microsoft ★★★★★ ()

llvm 3.4 будет последним релизом который будет содержать компилятор C++'98. Следующие релизы будут требовать встроенную поддержку С++'11.

Автоматический перевод? Должно ведь быть как-то так:

llvm 3.4 является последним релизом, который поддерживает сборку компилятором C++'98. Следующие релизы будут требовать поддержку некоторых возможностей С++'11 со стороны компилятора, которым выполняется сборка LLVM.

xaizek ★★★★★ ()
Последнее исправление: xaizek (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Таки были времена тоталитаризма и запрета анонимуса... Светлое время. Тогда и страницы были светлее и число их было выше.

Сказки венского леса, имхо. Особенно в техразделах.

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

регистрация — пять минут времени

Будто это когда-то было аргументом для анонимуса.

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

А зачем альтернатива свободному продукту? Не нравится политика партии - форкаешь и пилишь сам =)

Затем, что в общем случае эта мантра смысла не имеет. Форкни ядро, форкни libc, форкни init, форкни то и это — на собственно продукт что останется? Если на всё предыдущее квалификации хватит, что очень вряд ли.

llvm свободный продукт. Зачем gcc? Надо собрать под что-то отличное от х86 и ARM — форкайте llvm, добавляйте поддержку, потом получите свой cowsay на роутере.

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

+1, тоже пришлось по ссылке идти чтобы понять. Еще можно было бы уточнить, что за платформа R600. Для тех, кто мало в теме, что такое llvm.

qux ()

Писал как-то компилятор в LLMV асм. Интересная вещь.

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

Я на санитайзеры всё нарадоваться не могу

В GCC тоже есть http://gcc.gnu.org/gcc-4.8/changes.html

AddressSanitizer , a fast memory error detector, has been added and can be enabled via -fsanitize=address. Memory access instructions will be instrumented to detect heap-, stack-, and global-buffer overflow as well as use-after-free bugs. To get nicer stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on x86-64 Darwin.

ThreadSanitizer has been added and can be enabled via -fsanitize=thread. Instructions will be instrumented to detect data races. The ThreadSanitizer is available on x86-64 GNU/Linux.

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

в gcc порты, первичная разработка ведется под clang

Reset ★★★★★ ()

Вообще, что-то я не особо доволен тем, какой код генерирует этот clang в некоторых местах. Взять например умножение на константу

unsigned long long int imul101 (unsigned long long int a)
{
  return a*101;
}
GCC додумывается в данном случае заменить imull на три lea
imul101(unsigned long long):
	lea	rax, [rdi+rdi*4]
	lea	rax, [rax+rax*4]
	lea	rax, [rdi+rax*4]
	ret
чего не скажешь о clang 3.3

SZT ★★★★★ ()

Они вернули взад бэкэнд в С? Нет? Не нужно.

FeyFre ★★★★ ()

Да, с LTO беда, последний раз когда пробовал тестовый код с std::thread, то с LTO не работало, unresolved symbols.

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

R600 - это видеокарта

Эта видеокарта еще и VLIW-процессор.

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

Угу, /me в курсе, но в текст новости было бы хорошо вставить.

qux ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.