The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз набора компиляторов LLVM 3.9

03.09.2016 00:01

После шести месяцев разработки подготовлен релиз проекта LLVM 3.9 (Low Level Virtual Machine) - GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

В новом выпуске добавлен оптимизатор ThinLTO, обеспечена совместимость с ABI libstdc++ (GCC), реализована поддержка всех возможностей OpenCL 2.0 и возможностей OpenMP 4.5, не связанных с привлечением дополнительных аппаратных вычислительных устройств, добавлен инструмент clang-include-fixer, в компоновщике lld существенно улучшена поддержка ELF и добавлена начальная поддержка LTO-оптимизаций.

Улучшения в Clang 3.9:

  • Расширены средства диагностики Clang, позволяющие выявлять больше проблем и более точно формулировать их суть. Добавлено новое предупреждение "-Wcomma", диагностирующее применение встроенного оператора ",", а также предупреждения "-Wfloat-overflow-conversion" и "-Wfloat-zero-conversion" для выявления переполнения при преобразовании числа с плавающей запятой в целое и преобразования ненулевого числа с плавающей запятой в нулевое целое значение;
  • Реализована полная поддержка всех возможностей стандарта OpenCL 2.0, в том числе в новой версии появилась встроенная функция Pipe, поддержка динамического параллелизма, добавлены функции преобразования адресного пространства to_{global/local/private}, поддержка атрибута nosvm и pragma opencl_unroll_hint. Также улучшены средства диагностики и генерации блоков Clang, используемых в коде ядра OpenCL;
  • Реализованы все возможности стандарта OpenMP 4.5 (Open Multi-Processing), предоставляющего средства для применения методов параллельного программирования в программах на языках Си и Си++, за исключение средств для привлечения дополнительных аппаратных обработчиков (offloading). Значительно улучшено качество генерации конструкций OpenMP, что позволило получать на выходе заметно более быстрый и стабильный код;
  • Добавлена поддержка фреймворка RenderScript (включается опцией "-x renderscript" или при обработке файлов с расширением ".rs");
  • Расширена экспериментальная поддержка будущего стандарта C++1z, (-std=c++1z), например, добавлены атрибуты [[fallthrough]], [[nodiscard]] и [[maybe_unused]], реализована возможность объединённой инициализации классов с базовыми классами;
  • В статический анализатор добавлена проверка некорректного использования MPI API в C и C++, добавлены проверки утечек памяти и обращений к уже освобождённым блокам на платформе Windows. В состав включена экспериментальная реализация утилиты scan-build, переписанная на языке Python.
  • Добавлен новый интструмент clang-include-fixer, позволяющий автоматически вставить недостающие директивы "#include";
  • В linter clang-tidy добавлена большая порция новых проверок;

Основные новшества LLVM 3.9:

  • Компоновщик LLD доведён до рабочего состояния и теперь может связывать реальные приложения в формате ELF, включая сам LLVM и Clang, а также большинство приложений пространства пользователя FreeBSD. В LLD также добавлена поддержка оптимизации на этапе связывания (LTO) и объединение идентичных блоков кода. В дополнение к ранее поддерживаемым архитектурам x86, x86-64, MIPS, PowerPC и PPC64, добавлена поддержка ARM/Thumb, x32 ABI и MIPS N64 ABI;
  • Обеспечена совместимость с GCC ABI. Многие дистрибутивы Linux (Fedora, Debian, Ubuntu) перешли на использование нового GCC ABI для обхода несовместимостей с C++11 в libstdc++, что, в свою очередь, обернулось появлением несовместимостей с другими компиляторами, в том числе с Clang. В LLVM 3.9 добавлены патчи для решения возникших проблем;
  • Добавлена поддержка ThinLTO для выполнения оптимизации на этапе связывания, который может быть активирован при компиляции и связывании с опцией "-flto=thin". При использовании ThinLTO LTO-оптимизация разделена на три части: генерация промежуточного кода на этапе компиляции, запуск плагина Thin в компоновщике для комбинирования суммарных данных и выполнения общего анализа, и запуск бэкенда ThinLTO для применения оптимизаций в параллельном режиме;
  • Внесены многочисленные улучшения в бэкенды для архитектур ARM, AArch64, MIPS и PowerPC. В том числе добавлена поддержка процессоров Qualcomm Kryo, Broadcom Vulcan и Cortex-R8;
  • Для архитектуры x86 добавлена поддержка CPU Intel под кодовыми именами Skylake Server и Knights Landing, примечательных наличием инструкций AVX-512;
  • В бэкенд AMDGPU добавлена поддержка образов шейдеров OpenGL, хранилища буферов, атомарных счётчиков и вычислительных расширений шейдеров. Прекращена поддержка Mesa 11.0.x (требуется Mesa 12);
  • Прекращена поддержка сборочной системы autoconf в пользу CMake. Для сборки LLVM теперь требуется CMake 3.4.3 или более новая версия.


  1. Главная ссылка к новости (http://lists.llvm.org/pipermai...)
  2. OpenNews: Новая версия набора компиляторов LLVM 3.8
  3. OpenNews: AMD развивает основанный на LLVM универсальный компилятор C++ и CUDA для CPU/GPU
  4. OpenNews: Администрация по национальной ядерной безопасности США подключилась к усовершенствованию LLVM
  5. OpenNews: Увидел свет набор компиляторов LLVM 3.7
  6. OpenNews: LLVM Foundation получил официальный статус некоммерческой организации
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45072-llvm
Ключевые слова: llvm, clang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (97) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:16, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Clang может собрать ядро linux?
     
     
     
    Часть нити удалена модератором

  • 3.13, Владимир (??), 06:50, 03/09/2016 [ответить]  
  • –1 +/
    LLVMLinux - пока только с некоторым набором патчей (три десятка примерно).
     
  • 2.10, Аноним (-), 04:13, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > Clang может собрать ядро linux?

    Не так. Правильный вопрос: может ли ядро Линукс быть очищено от gcc-зависимостей и прочего мусора, чтобы его можно было бы собирать правильными компиляторами с внятной системой команд и внятными сообщениями об ошибках, не говоря о прочих преимуществах clang.

    Да, clang может собирать ядра ОСей общего назначения. Тому подтверждение давным давно собираемый clang-ом мейнстрим FreeBSD.

    Это не проблема сообщества LLVM разбираться в этой куче бардака под названием "код ядра Linux".

    Это проблема сообщества Linux привести в порядок кодовую базу своего ядра.

     
     
  • 3.11, Аноним (-), 04:35, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +14 +/
    Иными словами: пока нет, т.к. в коде Linux есть специфические для GCC вещи.

    // другой Аноним

     
  • 3.16, Аноним (-), 10:09, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Это не проблема сообщества Linux разбираться с кривыми недокомпиляторами.
     
     
  • 4.22, Аноним (-), 11:29, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Это не проблема сообщества Linux разбираться с кривыми недокомпиляторами.

    Зеркальная реплика по форме "сам дурак" - это похоже все, на что вы надеетесь, чтобы хоть как-то попытаться унять вашу боль. Других аргументов у вас нет.

     
     
  • 5.28, Аноним (-), 13:06, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Боль тут демонстрируют как раз поклонники шланга.

    Ответьте пожалуйста на простой вопрос: какую пользу получат разработчики ядра от возни с переписыванием фрагментов кода в которых используются gcc-специфичные расширения ?

     
     
  • 6.32, iZEN (ok), 14:49, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Боль тут демонстрируют как раз поклонники шланга.
    > Ответьте пожалуйста на простой вопрос: какую пользу получат разработчики ядра от возни
    > с переписыванием фрагментов кода в которых используются gcc-специфичные расширения ?

    Польза — от возможности подтвердить правильность написанного кода больше чем одним компилятором. Возможность в дальнейшем выяснить, где слабое звено (код, компилятор1, компилятор2,.., компиляторN), если что-то перестало работать, и исправить его.


     
     
  • 7.35, Аноним (-), 15:32, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ядро Linux - никогда и не декларировало совместимость с стандартами си Оно слиш... большой текст свёрнут, показать
     
     
  • 8.54, Moomintroll (ok), 19:41, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    http www gnu org software libc manual html_node Variadic-Functions html Станда... текст свёрнут, показать
     
     
  • 9.55, Moomintroll (ok), 19:42, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    а не расширение gcc , конечно... текст свёрнут, показать
     
  • 8.77, Аноним (-), 14:58, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Наверно, printf co нам всем приснился, да ... текст свёрнут, показать
     
  • 8.94, __yurkis (?), 16:37, 07/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Компилятор всего лишь инструмент Да, было Как же тогда работает printf ... большой текст свёрнут, показать
     
  • 6.33, Аноним (-), 15:04, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А кто сказал, что они разработчики ядра Linux должны получить от этого пользу ... большой текст свёрнут, показать
     
     
  • 7.36, Аноним (-), 15:33, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А кто сказал, что они (разработчики ядра Linux) должны получить от этого пользу.

    Тогда зачем им этим заниматься. Они как бы шлангофилам ничем не обязаны.

    > Вот во FreeBSD проблем с переходом на другой компилятор особо не было и код переписывать не пришлось.

    Никому не интересная возня в песочнице.

    > Другой вопрос, какую пользу они (разработчики ядра Linux) получили от того, что привязали ядро к конкретному компилятору, наплевав на стандарты языка.

    В стандартах языка хотя бы asm() есть ?

    > Просто кроме поклонников есть ещё и специалисты, которые умеют пользоваться без поклонения. Видимо вы об этом не знали.

    Как мило. Особенно после всех вами написанных бредней.

     
     
  • 8.39, Аноним (-), 15:41, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В стандартах языка Си asm и функции с переменным числом аргументов присутствую... текст свёрнут, показать
     
     
  • 9.45, Аноним (-), 16:20, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    И что, в стандарте описана передача значений в регистрах в из ассебмлерного кода... текст свёрнут, показать
     
     
  • 10.46, Аноним (-), 17:31, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Про переменное число аргументов это случайность Выше было сообщение, где утверж... текст свёрнут, показать
     
  • 10.76, Аноним (-), 14:55, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это описано в спецификации ABI, которую обязаны поддерживать все компиляторы, ко... текст свёрнут, показать
     
     
  • 11.82, Анонимный Алкоголик (??), 17:22, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    - Нет, не часть ABI для всех компиляторов У gcc кстати и синтаксис asm н... текст свёрнут, показать
     
     
  • 12.95, __yurkis (?), 16:40, 07/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Гм Тогда уж самый Ъ это синтаксис непосредственно орт Intel А не от AT T ... текст свёрнут, показать
     
  • 9.88, Аноним (-), 01:45, 06/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А реально такой код может собрать только gcc и в меньшей степени шланг Про всяк... текст свёрнут, показать
     
  • 7.37, Аноним (-), 15:34, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > А кто сказал, что они (разработчики ядра Linux) должны получить от этого
    > пользу. Было сказано, что это их проблемы.

    У них как раз нет проблем. Они этим не страдают, они этим наслаждаются, используя полезные фичи gcc с пылу с жару. Без них они все-равно буксовали бы по черному. Им и асм местами нужен, и функции с переменным числом параметров и прочие явно нестандартные вещи.

    А фрибсд как раз таки один большой кусок проблем. Как система вообще.

     
     
  • 8.49, iZEN (ok), 18:41, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Назовите несколько проблем FreeBSD ... текст свёрнут, показать
     
     
  • 9.57, Аноним (-), 20:44, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    - Нет нормального пакетника Ну как, пакетник технически уже есть Но пакетами п... большой текст свёрнут, показать
     
     
  • 10.61, й (?), 22:03, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вот тут не соглашусь jail ы вполне себе аналог openvz но требуют больше ручной... текст свёрнут, показать
     
     
  • 11.70, Аноним (-), 02:01, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Только openvz был пригоден для продакшна на продажу 10 лет назад И это был шаг ... большой текст свёрнут, показать
     
     
  • 12.73, й (?), 12:48, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    да какбе десять лет назад уже были и jails, и solaris zones ага а вот внутри и... текст свёрнут, показать
     
     
  • 13.89, Аноним (-), 01:57, 06/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Только jails тогда IIRC совсем не умели лимиты а-ля OVZ и виртуалихацию сети А ... большой текст свёрнут, показать
     
     
  • 14.91, iZEN (ok), 21:57, 06/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Jails лимитились как и юзеры - через общий login conf, если не ошибаюсь OVZ тог... текст свёрнут, показать
     
     
  • 15.92, Led (ok), 22:00, 06/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Видно все раскупили - не осталось уже практически ... текст свёрнут, показать
     
  • 14.99, й (?), 03:18, 08/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да вы и про heroku, небось, ещё не слышали, хотя уже шесть лет прошло ... текст свёрнут, показать
     
  • 12.78, iZEN (ok), 15:02, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Jails и были в продакшене с начала 2000-х Только IBM выделила в это же время на... текст свёрнут, показать
     
     
  • 13.84, Анноннимм (?), 03:04, 05/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Следующий шаг к просветлению - задуматься, почему ИБМ выделела на гну линукс, а ... текст свёрнут, показать
     
  • 13.90, Аноним (-), 02:06, 06/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А могли бы и бздам дать Если бы их проект не был невнятной академкуетой для сфе... текст свёрнут, показать
     
  • 10.96, yurkis (ok), 16:52, 07/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Просветите нас что не умеет pkg из того что умеет нормальный пакетник Мне оче... большой текст свёрнут, показать
     
     
  • 11.101, й (?), 02:56, 10/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    как минимум - разделение порта по пакетам devel, runtime, profile, etc - его ... текст свёрнут, показать
     
     
  • 12.103, john123 (ok), 11:27, 10/09/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Брр apt get головного мозга Пакеты создаются в процессе сборки посредством п... большой текст свёрнут, показать
     
     
  • 13.108, freehck (ok), 00:33, 19/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вы не поняли Речь шла о возможности раздробить пакет с исходным кодом, из котор... большой текст свёрнут, показать
     
  • 12.104, iZEN (ok), 11:34, 10/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У нас точнее отделяются мухи от котлет - http www freshports org search php st... текст свёрнут, показать
     
  • 10.102, qwerty (??), 10:41, 10/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В чем конкретно проблема Ты хотел использовать FreeBSD в своих решения и не по... большой текст свёрнут, показать
     
  • 9.79, Led (ok), 15:42, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты ... текст свёрнут, показать
     
  • 8.53, Jan Dakinevich (ok), 19:26, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    User294, опять ты http www open-std org jtc1 sc22 wg14 www docs n1256 pdf 7 1... текст свёрнут, показать
     
  • 3.18, Аноним (-), 10:48, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Просто интересно, можете привести примеры gcc-зависимостей?
     
     
  • 4.21, Аноним (-), 11:26, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Сразу видно, что вы компиляторами пользоваться не умеете.

    Чтобы увидеть примеры зависимостей от GCC в коде ядра Linux - для этого достаточно запустить на этом коде любой другой компилятор, отличный от GCC.

    Почему вы думаете FreeBSD удалось практически сразу перевести на CLANG? Потому что они сразу они изначально придерживались стандартов языка C. А не полагались на веру в единственно правильный компилятор. И сейчас не полагаются. Появится копилятор лучше CLANG - им будет несложно перейти на него.

     
     
  • 5.24, ананим.orig (?), 12:31, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты чего на личности то сваливаешься?
    Умеет он или нет — про это твоё мнение не спрашивали. Пример gcc-зависимостей давай приводи раз вылез.
     
     
  • 6.31, Аноним (-), 14:45, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Ты чего на личности то сваливаешься?
    > Умеет он или нет — про это твоё мнение не спрашивали. Пример gcc-зависимостей давай приводи раз вылез.

    А вы значит ещё один, чья личность не позволяет определить зависимости кода от компилятора при наличии доступа к коду и компилятору. И вам нужны другие личности, которые бы эти самые зависимости привели.

    > давай приводи раз вылез.

    И раз уж ваша личность вылезла с требованием привести зависимости, когда их и так можно получить самостоятельно, тогда уж приведите пожалуйста необходимость самого приведения. Проще говоря, зачем вам понадобилось, чтобы вам это привели? И что вы с резузультатом этого приведения собирались делать? И вообще, какой именно ущерб вы усмотрели для своей личности? Ну, раз уж вы вылезли со своей личностью.

     
     
  • 7.105, Аноним (-), 10:24, 17/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Демагог дешевый, тебя попросили привести конкретные примеры GCC-зависимостей.
     
     
  • 8.107, iZEN (ok), 11:32, 17/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    portmaster graphics vigra graphics vigra 5 The followin... текст свёрнут, показать
     

  • 1.4, Ivan_83 (ok), 01:02, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    AVX-512 - сдаётся мне что оно сыро-глючно.
    Учитывая что в sse и avx я нашёл пару багов:
    _mm256_extract_epi8 возвращало нифига не 8 бит а все 16.
    _mm_extract_epi8 как то коряво (тормозно) эмулировалась при сборке с версией sse где её нет.
     
  • 1.5, nc (ok), 01:02, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А какие нибудь интересные нестандартные расширения как у гцц у шланга есть? И поддерживает ли он нестандарные расширения языков С и С++ от гцц?
     
     
  • 2.6, Crazy Alex (ok), 01:06, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    гнушные расширения поддерживает процентов на 70. Насчёт его собственных - не в курсе
     
  • 2.23, Аноним (-), 11:39, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > А какие нибудь интересные нестандартные расширения как у гцц у шланга есть?

    Самой главной нестандартной фишкой CLANG явилась его полная поддержка стандартов языка C++. В то время как до этого "стандартом" других компиляторов было постоянно ломать стандарты языка, и не заботиться о поддержке стандартов, постоянно пытаясь доказывать что их собственные нестандартные фишки лучше чем у других.

    Ничто не мешает делать нестандартные расширения. Другой вопрос, чтобы хотя бы один общий стандарт поддерживали.

    > И поддерживает ли он нестандарные расширения языков С и С++ от гцц?

    Частично поддерживает.

     
     
  • 3.27, ананим.orig (?), 12:52, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты сабж то читал Про ABI Только сейчас https gcc gnu org onlinedocs libstdc... большой текст свёрнут, показать
     
     
  • 4.34, Аноним (-), 15:16, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Все правильно, вы лишь подтвердили мои слова. Потому что в сообществе GCC, засуетились и стали поддерживать стандарты в догонку за CLANG.

    Это хорошо, что вы научились копипастить цитаты на английском, и приводить ссылки из Интернета. Теперь вам только осталось научиться понимать, что там написано. Способны ли вы самостоятельно своими словами объяснить, без невнятных намеков, что именно вам показалось несоответствующим действительности?

     
     
  • 5.58, Аноним (-), 20:46, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Все правильно, вы лишь подтвердили мои слова. Потому что в сообществе GCC,
    > засуетились и стали поддерживать стандарты в догонку за CLANG.

    И все бы ничего, если бы тыкавшие палочкой не обнаружили что и у gcc и у clang поддержка последних стандартов таки неполная. При этом у каждого по своему. И наверное как-то криво при этом с невозмутимой мордой втирать про ПОЛНУЮ поддержку стандартов.

     
     
  • 6.62, ананим.orig (?), 22:19, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не полная. И с багами.
    Но сабж (про апи. И с учетом млих мсылок выше) говорит, что шланг в догоняющих.
    Может пока, х/з.
     

  • 1.7, h31 (ok), 01:11, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Внесены многочисленные улучшения в бэкенды для архитектур ARM

    Это хорошо. Недавно собрал md5deep для ARMv7, сначала с gcc 6.1, потом с clang 3.8. Вариант, собранный gcc, работает на 10-15% быстрее.

     
     
  • 2.8, Ivan_83 (ok), 01:56, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Тут как повезёт.
    Я много экспериментировал с ГОСТ3411-2012, как чисто на С так и с SSE и AVX инстриктами.
    Даже на С у меня были варианты на которых шланг работал быстрее а гцц медленнее и наоборот.
    Скорость кода сгенеринного шланг 3.8 почти всегда не отличалась от 3.7, а вот 3.6 и 3.3 (или 3.4) отличались.
     
     
  • 3.9, h31 (ok), 03:37, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, может подскажете?
    Когда-то смотрел бенчмарки gcc vs clang, и почти везде говорилось, что clang компилирует в 2-3 раза быстрее gcc. Я много чего собираю на одноплатнике, и хочется, чтобы компиляция шла быстрее. Собственно поэтому и решил поэкспериментировать с clang-ом. Попробовал у себя - разница есть, но намного меньше ожидаемой, процентов 10. Погуглил свежие бенчмарки - да, ситуация поменялась, теперь нет такой большой разницы в скорости сборки. Поэтому интересно, это gcc так сильно ускорили, или наоборот, clang так пожирнел?
     
     
  • 4.14, mumu (??), 07:13, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Скорее второе. Новенькие проекты гордятся какие они шустрые и легковесные по сравнению с "динозаврами". Вот только лет через пять все снова встает на свои места. Потому что проекты тяжелые и медленные не потому что так кому-то захотелось, а потому что пришлось.
     
     
  • 5.29, Аноним (-), 13:56, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>потому что пришлось.

    потому что объективная необходимость.

     
  • 4.20, iZEN (ok), 11:04, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    GCC серьёзно улучшили, а вот LLVM/Clang к 4.0 версии сильно разжирел.
     
     
  • 5.25, ананим.orig (?), 12:37, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да, вантузного жабиста только и слушать.

    Стал просто реализовавать стандарты и.. о! Чудо! Стал толстеть.
    Внезапно.

     
     
  • 6.30, iZEN (ok), 13:57, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да-да, вантузного жабиста только и слушать.
    > Стал просто реализовавать стандарты и.. о! Чудо! Стал толстеть.

    А то!

    % du -d1 /usr/local/llvm37/
    3,2M /usr/local/llvm37/bin
    46M /usr/local/llvm37/lib
    18K /usr/local/llvm37/libexec
    219K /usr/local/llvm37/share
    10M /usr/local/llvm37/include
    59M /usr/local/llvm37/
    % /usr/local/llvm37/bin/clang --version
    clang version 3.7.1 (tags/RELEASE_371/final)
    Target: x86_64-unknown-freebsd11.0
    Thread model: posix

    % du -d1 /usr/local/llvm38
    267K /usr/local/llvm38/share
    11M /usr/local/llvm38/include
    279M /usr/local/llvm38/bin
    18K /usr/local/llvm38/libexec
    124M /usr/local/llvm38/lib
    415M /usr/local/llvm38
    % /usr/local/llvm38/bin/clang --version
    clang version 3.8.1 (tags/RELEASE_381/final)
    Target: x86_64-unknown-freebsd11.0
    Thread model: posix
    InstalledDir: /usr/local/llvm38/bin

    % du -d1 /usr/local/llvm39
    93K /usr/local/llvm39/share
    12M /usr/local/llvm39/include
    259M /usr/local/llvm39/bin
    18K /usr/local/llvm39/libexec
    149M /usr/local/llvm39/lib
    420M /usr/local/llvm39
    % /usr/local/llvm39/bin/clang --version
    clang version 3.9.0 (tags/RELEASE_390/final)
    Target: x86_64-unknown-freebsd11.0
    Thread model: posix
    InstalledDir: /usr/local/llvm39/bin


    > Внезапно.

    % du -d1 /usr/local/llvm-devel/
    163M /usr/local/llvm-devel/lib
    124K /usr/local/llvm-devel/share
    354M /usr/local/llvm-devel/bin
    12M /usr/local/llvm-devel/include
    18K /usr/local/llvm-devel/libexec
    530M /usr/local/llvm-devel/
    % /usr/local/llvm-devel/bin/clang --version
    clang version 4.0.0
    Target: x86_64-unknown-freebsd11.0
    Thread model: posix
    InstalledDir: /usr/local/llvm-devel/bin

     
     
  • 7.42, Аноним (-), 15:44, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ты и спамер. А зачем тебе 3 шланга? Ты что, сантехник?
     
     
  • 8.52, iZEN (ok), 18:49, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    llvm37 завязан на DRI2 Mesa libEGL 11 2 2, используемых в xorg-server-1 17 4 для... текст свёрнут, показать
     
     
  • 9.56, ананим.orig (?), 20:16, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Помнится в гцц с ядром подобные детские проблемы были в районе 2 95 Нда давно... текст свёрнут, показать
     
     
  • 10.59, Andrey Mitrofanov (?), 21:23, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О БээСДэшники собирали своё ядро чем-то другим Чем И кто-что их заставило н... текст свёрнут, показать
     
     
  • 11.63, ананим.orig (?), 22:23, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    D Ну это смотря какие Некоторые конЪпилятЪ javac Да ещё и под вантузом ... текст свёрнут, показать
     
  • 10.64, iZEN (ok), 00:41, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всё-таки мне удалось скомпилировать не только ядро, но и базовую систему FreeBSD... текст свёрнут, показать
     
     
  • 11.65, Аноним (-), 01:24, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если у тебя дофига ресурсов и ты хочешь ощутить себя конкретной билдфермой - поп... текст свёрнут, показать
     
     
  • 12.83, iZEN (ok), 00:53, 05/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    У меня старенький процессор, на котором я всего лишь хочу ускорить компиляцию и ... текст свёрнут, показать
     
     
  • 13.85, Led (ok), 09:20, 05/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем ты венду перекомпилируешь ... текст свёрнут, показать
     
     
  • 14.93, iZEN (ok), 14:59, 07/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чтобы перестать пить коньяк по утрам ... текст свёрнут, показать
     
  • 11.71, Аноним (-), 06:35, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    несколько дополнительных утилит - clang-tidy, clang-format, clang-include-fixer,... текст свёрнут, показать
     
     
  • 12.75, iZEN (ok), 14:52, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что они дают дополнительно Это утилиты только для разработчика полезны, когда... текст свёрнут, показать
     
  • 10.66, Аноним (-), 01:25, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    С каких это пор у лапчатых есть еще и база Ну хоть бы иногда lkml почитывали,... большой текст свёрнут, показать
     
     
  • 11.72, ананим.orig (?), 08:27, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Баги с генеральной линией партии не путаем, да, лапчатый ... текст свёрнут, показать
     
     
  • 12.74, Аноним (-), 14:00, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Теплое с мягким, как некоторые, сравнивая Не, не путаем Кстати, как знаток ген... текст свёрнут, показать
     
  • 9.67, Аноним (-), 01:45, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Насколько я помню он и с 3 8 нормально живет, при том если это для амдшек - в 3 ... текст свёрнут, показать
     
  • 7.48, ананим.orig (?), 18:08, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Алё! Речь шла о скорости компиляции.
    При чём тут размер, занимаемый в ФС?
     
  • 4.40, Аноним (-), 15:42, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пока он хреново оптимизировал код - так и было А как оптимизатор стал сравним п... большой текст свёрнут, показать
     
     
  • 5.60, h31 (ok), 21:32, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за ответ, Аноним. В таком случае останусь на gcc. Развернул на десктопе кросс-компилятор, подключил к одноплатнику как узел distcc - стало собирать в несколько раз быстрее.
     
  • 2.43, Аноним (-), 15:46, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Это хорошо. Недавно собрал md5deep для ARMv7, сначала с gcc 6.1, потом
    > с clang 3.8. Вариант, собранный gcc, работает на 10-15% быстрее.

    Подожди, ща они напрягутся и оптимизнут. И скорость компиляции станет как у gcc 4.7 :)

     
     
  • 3.81, Вареник (?), 17:11, 04/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Меньшая скорость может быть благодаря лучшей обработке - больше проверок/диангостик/предупреждений, например, или просчет вариантов оптимизаций.

    Т.е. это не тот параметр, который надо вытягивать любой ценой и выставлять 10-15% как победу. Можно в любой момент выкинуть кучу проверок и получить 300% прироста за счет кривости и неподдержки чего-нибудь в языке.

    Появление clang мотивировалось глючностью, монолитностью (сложности разделения на модули), замусоренностью кода (заплатка на заплатке) GCC, а не претензиями к его скорости.

     

  • 1.19, iZEN (ok), 11:01, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    LLVM/Clang 3.9 спокойно собирает ядро FreeBSD 11.0-PRERELEASE, а вот собрать мир не получается - останавливается на libpam-зависимости libc.
     
     
  • 2.41, Аноним (-), 15:43, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > LLVM/Clang 3.9 спокойно собирает ядро FreeBSD 11.0-PRERELEASE, а вот собрать мир не
    > получается - останавливается на libpam-зависимости libc.

    Нашла коса на камень...

     

  • 1.26, commiethebeastie (ok), 12:51, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Наконец-то на радеонах не надо ставить гитовскую версию.
     
  • 1.50, КарМер (?), 18:47, 03/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Fortran мерзавцы  добавили, как в прошлом году обещали ??
     
     
  • 2.51, КарМер (?), 18:48, 03/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не добавили. Однозначно, - мерзавцы !
     

  • 1.80, Вареник (?), 17:03, 04/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    CLANG первые сделали нормальную поддержку стандартов С++ (без тонн собственных несовместимых расширений остальных компиляторов) и вменяемую диагностику ошибок/предупреждений.

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

    Без конкуренции с ним GCC сейчас был бы намного хуже, поэтому вопли фанатов GCC о ненужности - совершенно неуместны.

     
  • 1.86, iZEN (ok), 20:14, 05/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Кто может подсказать, куда копать в этой стоп-ошибке usr local llvm39 bin clan... большой текст свёрнут, показать
     
     
  • 2.87, Аноним (-), 00:41, 06/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кто может подсказать, куда копать в этой стоп-ошибке:

    добавить к CFLAGS += -Wno-error=varargs

     
     
  • 3.97, iZEN (ok), 21:09, 07/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Теперь другая ошибка usr local llvm39 bin clang -Wno-error varargs -c -O2 -pip... большой текст свёрнут, показать
     
     
  • 4.98, Аноним (-), 23:53, 07/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://wiki.freebsd.org/BuildingFreeBSDWithClang
    см.
    NO_WERROR=
     
     
  • 5.100, iZEN (ok), 21:35, 08/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    WERROR=
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру