The OpenNET Project / Index page

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

Новая версия набора компиляторов LLVM 3.2

21.12.2012 14:23

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

Основные новшества субпроектов LLVM 3.2:

  • В LLVM-фронтэнде Clang обеспечена полноценная поддержка стандарта C++'11. Добавлены средства для документирования кода внутри комментариев с использованием синтаксиса, напоминающего Doxygen. Улучшены средства диагностики для выявления возможных проблем в коде. Добавлена поддержка атрибута tls_model для явного определения модели Thread-Local Storage. Добавлена поддержка атрибутов для контроля сохранности типов на этапе компиляции для функций с переменными аргументами и аргументами функции 'void *';
  • В DragonEgg, плагине к набору компиляторов GCC, заменяющем оригинальные оптимизаторы и генераторы кода GCC на аналоги, созданные в рамках проекта LLVM, добавлена поддержка загрузки плагинов LLVM, таких как Polly. Налажена передача информации о жизненном цикле переменных в оптимизаторы LLVM. Для сборки с поддержкой LTO более не требуется GCC;
  • В инструментарии для анализа кода Clang Static Analyzer существенно расширена поддержка языка Objective-C, в том числе обеспечена поддержка новых литералов для работы с массивами и словарными типами данных. В статический анализатор кода Clang добавлена поддержка внутрипроцедурного анализа для функций и методов Objective-C и C++. Улучшен код для моделирования вызова функций;
  • Улучшена работа библиотек libc++ и compiler_rt, которые распространяются под двойной лицензией MIT и UIUC. Библиотека libc++ представляет собой реализацию стандартной библиотеки классов C++, распространяемую под BSD-подобной лицензией и нацеленную на высокоэффективную генерацию кода и на максимальное обеспечение совместимости с существующими и будущими стандартами. Библиотека обеспечивает минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти. В новой версии значительно улучшена поддержка стандарта C++11 и проведена оптимизация производительности;
  • Проведена работа над ошибками в VMKit, виртуальной машине Java VM, использующей LLVM для статической и JIT-компиляции;
  • Расширены возможности экспериментального оптимизатора Polly. Улучшены алгоритмы оптимизации циклов и механизмы автоматического распараллеливания кода с задействованием OpenMP. Добавлена распространяемая под лицензией MIT замена для CLooG (LGPLv2). Проведено перелицензирование библиотеки isl (integer set library), которая теперь доступна под лицензией MIT;

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

  • В оптимизаторе представлена начальная реализация кода автоматической векторизации циклов (Loop Vectorizer), пока пригодная лишь для распараллеливания выполнения небольших циклов. По умолчанию векторизация циклов отключена, для включения необходимо указать "-mllvm -vectorize-loops". Вторым важным улучшением оптимизатора, является переработанная реализация фазы оптимизации SROA (Scalar Replacement of Aggregates), в результате которой теперь генерируется код, более пригодный для последующих фаз оптимизаций;
  • Добавлены оптимизации для некоторых новых моделей процессоров на базе архитектуры ARM. Добавлена поддержка CPU A6 'Swift'. Для целевой платформы ARM добавлен полноценный макроассемблер, в том числе поддерживающий модуль direct-to-object для clang. Полная поддержка ассемблера включена для режимов Thumb1, Thumb2 и ARM modes, а также для специфичных расширений VFP2, VFP3 и NEON;
  • Добавлен новый бэкенд NVPTX, созданный при участии компании NVIDIA, для генерации кода с использованием виртуальной системы команд (Instruction Set Architecture) псевдоязыка NVIDIA PTX (Parallel Thread Execution), используемого в окружении CUDA;
  • В LLVM IR (Intermediate Representation) добавлена поддержка явного выбора TLS (Thread-Local Storage) модели для хранения локальных переменных;
  • Улучшена работа платформонезависимого генератора кода. Добавлена новая фаза оптимизации, названная "раскраска стека" (Stack Coloring), осуществляющая слияние объектов в стеке, используемых в разрозненных частях кода, что позволяет существенно сократить размер стека. Задействованы новые, более агрессивные алгоритмы генерации кода. Добавлена новая инфраструктура TableGen, учитывающая зависимости между инструкциями, и новый упаковщик для группировки машинных команд в "связки инструкций" для целевых архитектур VLIW, в которых одна инструкция содержит несколько параллельно выполняющихся операций;
  • Расширена поддержка инструкций AVX2 (Advanced Vector Extensions) для процессоров x86;
  • Значительно улучшена работа бэкенда MIPS, включая обеспечение поддержки интегрированного ассемблера и дизассемблера для MIPS32 и MIPS64. Добавлена экспериментальная поддержка MIPS16;
  • Для целевой платформы PowerPC добавлены многочисленные улучшения и исправления, направленные на поддержку 64-разрядных процессоров PowerPC, улучшене совместимости с GCC и расширение поддержки ABI-интерфейса ELF для архитектуры PowerPC 64. Добавлена поддержка MCJIT.

Из параллельно развивающихся проектов, основанных на LLVM, можно отметить:

  • KLEE - символьный анализатор и генератор тестовых наборов;
  • Runtime-библиотека compiler-rt;
  • llvm-mc - автогенератор ассемблера, дизассемблера и других, связанных с машинным кодом компонентов, на основе описаний параметров LLVM-совместимых платформ.
  • VMKit - виртуальная машина для Java и .NET;
  • Реализация функционального языка программирования Pure;
  • LDC - компилятор для языка D;
  • Roadsend PHP - оптимизатор, статический и JIT компилятор для языка PHP;
  • Виртуальные машины для Ruby: Rubinius и MacRuby;
  • Unladen Swallow - реализация языка Python;
  • LLVM-Lua
  • FlashCCompiler - средство для компиляции кода на языке Си в вид пригодный для выполнения в виртуальной машине Adobe Flash;
  • LLDB - новая модульная инфраструктура отладки, использующая такие подсистемы LLVM как API для дизассемблирования, Clang AST (Abstract Syntax Tree), парсер выражений, генератор кода и JIT-компилятор. LLDB поддерживает отладку многопоточных программ на языках C, Objective-C и C++; отличается возможностью подключения плагинов и скриптов на языке Python; демонстрирует экстремально высокое быстродействие при отладке программ большого размера;
  • emscripten - компилятор биткода LLVM в JavaScript, позволяющий преобразовать для запуска в браузере приложения, изначально написанные на языке Си. Например, удалось запустить Python, Lua, Quake, Freetype;
  • sparse-llvm - бэкенд, нацеленный на создание Си-компилятора, способного собирать ядро Linux.
  • Portable OpenCL - открытая и независимая реализация стандарта OpenCL;
  • CUDA Compiler - позволяет сгенерировать GPU-инструкции из кода, написанного на языках Си, Си++ и Fortran;
  • Julia - открытый динамический язык программирования, использующий наработки проекта LLVM.


  1. Главная ссылка к новости (http://lists.cs.uiuc.edu/piper...)
  2. OpenNews: В кодовую базу проекта LLVM добавлен бэкэнд для GPU семейства R600
  3. OpenNews: Проект DARPA по созданию на базе LLVM фреймворка для тестирования приложений на уязвимости
  4. OpenNews: Разработчики LLVM при голосовании отдали предпочтение GIT
  5. OpenNews: Представлена реализация LLVM Core, переписанная на языке Java
  6. OpenNews: Проект по добавлению поддержки OpenMP в LLVM
Лицензия: CC-BY
Тип: Интересно / Программы
Короткая ссылка: https://opennet.ru/35666-llvm
Ключевые слова: llvm, compile
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (56) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 15:01, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я поначалу думал, что релиз FreeBSD 9.1 задерживается, потому что разработчики хотят включить в него Clang/LLVM 3.2. Но наверное те образы, которые выложены на фтп, уже не изменят.
     
     
  • 2.9, IMHO (?), 15:23, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    его в 10й версии планируют ввести как основной, но gcc там будет по умолчанию
     
     
  • 3.11, Аноним (-), 15:40, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кстати, опубликовали годовой отчет FreeBSD Foundation, там много интересного, а на opennet.ru новости почему-то нет. http://freebsdfoundation.org/press/2012Dec-newsletter.shtml
     
     
  • 4.27, Аноним (-), 19:36, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Самопиар забавный. У гражданина явно розовые очки на глазах.
     
  • 4.35, arisu (ok), 20:35, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кстати, опубликовали годовой отчет FreeBSD Foundation, там много интересного, а на opennet.ru
    > новости почему-то нет.

    дык напиши, дел-то.

     

  • 1.2, AEffect (?), 15:10, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Прогресс clang очень радует.
     
     
  • 2.4, anonymous (??), 15:17, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Пора ему уже обгонять GCC. Или еще 10 лет надо? Он же такой хороший прехороший, такой модульный премодульный, такой понятный для новичка. Когда рвать GCC то начнет не на словах?
     
     
  • 3.5, прохожий (?), 15:19, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    он уже сейчас рвет - static analyzer очень очень не плох.
    ну и почему-то именно llvm используют в X.org для компиляции шейдеров, а gcc оказался не при делах..
     
     
  • 4.7, Иван Иванович Иванов (?), 15:21, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На каких тестах рвёт? Пожалуйста, покажите.

    Пока ничего не видел.

     
     
  • 5.8, прохожий (?), 15:23, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > На каких тестах рвёт? Пожалуйста, покажите.
    > Пока ничего не видел.

    покажите пожалуста статический анализатор в gcc - а потом поговорим :-) Этого у gcc нету и не будет..

     
     
  • 6.12, Andrey Mitrofanov (?), 15:41, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> На каких тестах рвёт?
    >статический анализатор

    Мы поняли, его анализы порвут люьые тесты!

     
  • 6.13, Аноним (-), 15:47, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Этого у gcc нету и не будет..

    GCC настолько суров, что компиляет всё подряд без всяких анализов, ага.

     
  • 6.15, Аноним (-), 15:50, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >покажите пожалуста статический анализатор в gcc

    А зачем он именно в компиляторе? Их существуют сотни, в том числе коммерческие, а прибивать конкретный анализатор гвоздями, по меньшей мере, глупо.
    Кстати если он вам так нравится вы можете использовать Clang Static Analyzer вместе с GCC, без проблем.

     
     
  • 7.32, прохожий (?), 20:07, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >>покажите пожалуста статический анализатор в gcc
    > А зачем он именно в компиляторе? Их существуют сотни, в том числе
    > коммерческие, а прибивать конкретный анализатор гвоздями, по меньшей мере, глупо.
    > Кстати если он вам так нравится вы можете использовать Clang Static Analyzer
    > вместе с GCC, без проблем.

    ясна. как только показываешь чего не хватает - так сразу начинаются вопли - "не нужно".
    Слышали уже такое - плавали..

    А зачем мне нужно использовать Clang Static Analyzer - с gcc? когда можно без gcc обойтись.

     
     
  • 8.33, Andrey Mitrofanov (?), 20:19, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поняли уже все, поскольку cxx11 в llvm нет, ты выдвигаешь новую Супер-Теорию, ко... текст свёрнут, показать
     
  • 7.49, Аноним (-), 04:20, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    анонимусы всё считают, что компиляторы дебилами делаются...

    > А зачем он именно в компиляторе?

    например, для реализации механизма ARC (http://en.wikipedia.org/wiki/Automatic_Reference_Counting) при компиляции кода objective-c.

     
  • 6.24, Аноним (-), 18:40, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > покажите пожалуста статический анализатор в gcc

    Их отдельных как грязи. А вот код отдельной тулзой фиг соптимизируешь.

     
  • 4.21, Аноним (-), 16:09, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > ну и почему-то именно llvm используют в X.org для компиляции шейдеров
    > X.org
    > шейдеров

    Нет в X.org никаких шейдеров, вас жестоко обманули. Шейдеры — это к Mesa и Gallium3D.

     
     
  • 5.31, прохожий (?), 20:05, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >> ну и почему-то именно llvm используют в X.org для компиляции шейдеров
    >> X.org
    >> шейдеров
    > Нет в X.org никаких шейдеров, вас жестоко обманули. Шейдеры — это к
    > Mesa и Gallium3D.

    которые часть xorg в сумме. но не суть важно - gcc такого не умеет.

     
     
  • 6.37, Аноним (-), 20:47, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Кэп напоминает, что gcc вообще-то и не предназначен для того, чтобы компилировать шейдеры. Да и LLVM не умеет прорвы из того, что умеет gcc. Оптимизацию, например. И поддержку архитектур.
     
     
  • 7.51, linux must _RIP_ (?), 07:51, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Кэп напоминает, что gcc вообще-то и не предназначен для того, чтобы компилировать
    > шейдеры. Да и LLVM не умеет прорвы из того, что умеет
    > gcc. Оптимизацию, например. И поддержку архитектур.

    Ну да. отмазки у нас по средам.

    А архитектуры - в случае llvm - пишутся очень легко. Только кэп напоминает что основными архитектурами является x86 (очень дофига рынка), arm, и умирающий power pc и mips. Остальные платформы скорее для гиков. А все эти платформы llvm умеет. Видимо ваш кэп потерялся в прошлом?

     
     
  • 8.52, Аноним (-), 09:35, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Склько десятков лет еще нужно, чтобы они легко написались на деле а не на словах... текст свёрнут, показать
     
  • 3.6, прохожий (?), 15:21, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Пора ему уже обгонять GCC. Или еще 10 лет надо? Он же
    > такой хороший прехороший, такой модульный премодульный, такой понятный для новичка. Когда
    > рвать GCC то начнет не на словах?

    http://gcc.gnu.org/gcc-4.7/cxx0x_status.html

    а теперь сравниваем с
    >>

    -  В LLVM-фронтэнде Clang обеспечена полноценная поддержка стандарта C++'11
    >>

    так что gcc начинает уже отставать... не тот он уже.. не тот..

     
     
  • 4.10, Аноним (-), 15:37, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А теперь сравниваем:
    http://clang.llvm.org/cxx_status.html
    Generalized attributes N2761 No
    Inheriting constructors N2540 No
    Concurrency - 50%
    и тд
     
     
  • 5.14, BayaN (ok), 15:48, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А теперь сравниваем:
    > http://clang.llvm.org/cxx_status.html

    Last updated: $Date: 2012-10-22 19:32:41 -0500 (Mon, 22 Oct 2012) $

    Ну и там ни слова про Clang 3.2. Страницу видимо не обновляли.

     
  • 4.20, Hugo Reyes (ok), 16:07, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Новость кривая. Нет пока полноценной поддержки. Читай оригинал:
    http://llvm.org/releases/3.2/tools/clang/docs/ReleaseNotes.html
     
  • 4.43, ferux (ok), 00:00, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то по ссылки новости не полноценная поддержка а
    >Clang 3.2 supports most of the language features added in the latest ISO C++ standard.

    Да и в направлении Generalized attributes у них месяц назад даже работа не велась, судя по llvm-dev, а работы там достаточно должно быть.

     

  • 1.3, прохожий (?), 15:15, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > Улучшена работа библиотек libc++ и compiler_rt, которые распространяются под двойной лицензией MIT и UIUC.

    Что гарантирует что программы не будут зависеть - захочет Столман добавить linking exception для gcc или решит что все собранное при помощи gcc обязано быть GNU GPL vX (как уже было с v3).

     
     
  • 2.16, GentooBoy (ok), 15:52, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +7 +/
    А все что напечатано в ms word принадлежит M$ )))
     
     
  • 3.17, 1 (??), 15:58, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    тссс ... накаркаешь
     
     
  • 4.28, Аноним (-), 19:37, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > тссс ... накаркаешь

    Очкуете, хомячки? Это вы после инстаграма так? :)

     
  • 2.25, Аноним (-), 18:45, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что гарантирует что программы не будут зависеть

    А зависимость от эппла куда делась? Вон тут видно уже что к чему - непропорционально много внимания всяким левым objc и яблочным процам. А если кто вздумает отскрестись от асфальта и пойдет конкурировать всерьез - быстренько окажется без компилера и улучшений в нем. Со стороны яппла довольно умно.

     
     
  • 3.29, прохожий (?), 20:02, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А зависимость от эппла куда делась?

    а она там была? разрабатывают не сотрудники, права на код принадлежат не Apple - в чем зависимость то?
    Вот в GCC есть зависимость на GNU - как чихнут в там - так в gcc и будет.
    За что разработчик уже не раз gcc комитет критиковали.

    > Вон тут видно уже что к чему - непропорционально много внимания всяким левым objc и яблочным процам.

    Что вам не устравает? это открытый код - значит делает что как может.
    вы забыли что один из типов оптимизации в gcc (которую дарил google) работает только на x86 - вас не удивляет такое предпочтение перед MIPS? меня например возмущает такая дискриминация.

    > А если кто вздумает отскрестись от асфальта и пойдет конкурировать всерьез - быстренько окажется без компилера и улучшений в нем.

    Да ну? а что открытый код куда-то денется? его прям так сразу закроют? Вы это в серьез? неее.. вам надо провериться... Боюсь случай запущенный - но излечимый.

     
  • 3.30, прохожий (?), 20:04, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/

    > А если кто вздумает отскрестись от асфальта и пойдет конкурировать всерьез
    > - быстренько окажется без компилера и улучшений в нем.

    Вы кстати это придумали посмотрев на RedHat - как только Oracle стал с ним конкурирвать и купил splice (которую они тоже хотели купить) - так сразу из ядра сделали блоб - в котором никто не может разобраться. За одно подгадили другим открытым проектам.. Слава RedHat ?!

     
  • 3.36, arisu (ok), 20:39, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > непропорционально много внимания всяким левым objc

    а вот Objective C не надо ругать, отличный язык. и практически, и как пример правильного привинчивания ООП к С. я, правда, не смотрел на ObjC 2 (или какой там сейчас), не в курсе, чего туда досыпали. но правильную концепцию испортить достаточно сложно.

     
  • 3.38, Аноним (-), 21:58, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > и яблочным процам

    Выдыхайте, с каких пор ARM имеет отношение к Apple?

     
     
  • 4.56, dxd (?), 21:11, 23/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    С момента основания ARM Holdings эпплом?
     
  • 2.47, Michael Shigorin (ok), 01:39, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что гарантирует что программы не будут зависеть - захочет Столман добавить linking
    > exception для gcc или решит что все собранное при помощи gcc
    > обязано быть GNU GPL vX (как уже было с v3).

    Вас совсем не смущает то, что ошибку исправили, как только заметили?

     
     
  • 3.48, arisu (ok), 01:45, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вас совсем не смущает то, что ошибку исправили, как только заметили?

    нет, конечно: с такой поправкой уже не получается кричать, что «FSF и rms хотят поработить весь мир!»

     

  • 1.18, Hugo Reyes (ok), 16:00, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Че-то таблицу по статусу C++11 не обновили
    http://clang.llvm.org/cxx_status.html

    И до сих пор крашится на variadic template (одна из частей стандарта C++11)
    template <typename, typename ...Ts>
    int const (&make_zod())[sizeof...(Ts)+1] { return {42}; }

    int main(int argc, char *argv[])
    {
      make_zod<int>();
      return 0;
    }

     
     
  • 2.26, Аноним (-), 18:48, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну яблоку нафиг си++11 не упал. У них там objc. Ему и досталось.
     
  • 2.39, анонимус (??), 22:34, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Парсер не крахнулся, за генератор кода не скажу.
     
     
  • 3.41, Hugo Reyes (ok), 22:44, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Парсер не крахнулся, за генератор кода не скажу.

    В джире до сих пор issue не закрыт.
    Url не помню, ищется по ключевому слову "C++11". Пишу с мобильного.

     
  • 2.44, linux must _RIP_ (?), 00:54, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вреш ты все. никто не крашится - только не компилирует..

    bash-3.2$ clang++ -Wc++11-extensions 1.c++
    1.c++:1:30: warning: variadic templates are a C++11 extension [-Wc++11-extensions]
    template <typename, typename ...Ts>
                                 ^
    1.c++:2:51: warning: generalized initializer lists are a C++11 extension [-Wc++11-extensions]
    int const (&make_zod())[sizeof...(Ts)+1] { return {42}; }
                                                      ^~~~
    1.c++:2:51: error: reference to type 'const int [1]' cannot bind to an initializer list
    int const (&make_zod())[sizeof...(Ts)+1] { return {42}; }
                                                      ^~~~
    1.c++:6:5: note: in instantiation of function template specialization 'make_zod<int, >' requested here
        make_zod<int>();
        ^
    2 warnings and 1 error generated.

     
     
  • 3.54, Hugo Reyes (ok), 14:29, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > никто не крашится - только не компилирует..

    Неправильно выразился, проблема в том, что данный код с точки зрения C++11 корректный и должен компилироваться.

     

  • 1.19, Hugo Reyes (ok), 16:05, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Блин, кто новость писал. В оригинале
    Clang 3.2 supports _most_ of the language features added in the latest ISO C++ standard,C++ 2011.
    Но никак не полноценная поддержка.
    Следующие фичи были добавлены по сравнению с clang 3.1:
    - Implemented the C++11 discarded value expression rules for volatile lvalues.
    - Support for the C++11 enum forward declarations.
    - Handling of C++11 attribute namespaces (automatically).
    - Implemented C++11 [conv.prom]p4: an enumeration with a fixed underlying type has integral promotions to both its underlying type and to its underlying type's promoted type.
     
     
  • 2.22, Hugo Reyes (ok), 16:17, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > - Implemented the C++11 discarded value expression rules for volatile lvalues.

    - просто пофиксили багу (правда сейчас редко кто использует volatile, но да ладно - пофиксили и молодцы)
    > - Support for the C++11 enum forward declarations.

    уже есть в gcc (N2764)
    > - Handling of C++11 attribute namespaces (automatically).

    n2761 в gcc уже было
    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528
    > - Implemented C++11 [conv.prom]p4: an enumeration with a fixed underlying type has
    > integral promotions to both its underlying type and to its underlying
    > type's promoted type.

    Просто пофиксили багу, gcc этим не страдал

     

  • 1.23, an. (?), 17:51, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Отличная новость!Желаю проекту удачи и, наконец, взять под основное крыло дебаггер!
     
  • 1.34, arisu (ok), 20:35, 21/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    молодцы, хорошо идут. кто-нибудь проверял, как дела с армами? да, мне самому лень.

    p.s. имею в виду — «в сравнении с gcc».

     
     
  • 2.40, анонимус (??), 22:41, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    GCC побеждает, да и к тому же за ним проект Linaro, одна из целей которого - улучшение работы GCC под армами

    http://www.phoronix.com/scan.php?page=article&item=llvm_gcc_a15&num=1

     
     
  • 3.42, arisu (ok), 22:53, 21/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > GCC побеждает

    это старая версия кланга/ллвм. а мне интересно, много ли в новой улучшений. только из армов под рукой сейчас лишь N900, лень для него clang/llvm собирать, даже под скратчбоксом.

     
  • 3.46, linux must _RIP_ (?), 01:06, 22/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > GCC побеждает, да и к тому же за ним проект Linaro, одна
    > из целей которого - улучшение работы GCC под армами
    > http://www.phoronix.com/scan.php?page=article&item=llvm_gcc_a15&num=1

    сам себя не похвалишь - никто не похвалит ? :)

     

  • 1.50, Loooooker (ok), 06:47, 22/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересно, насколько легко/понятно декомпилируется байт-код llvm?
     
  • 1.57, iZEN (ok), 23:01, 29/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Шесть дней назад LLVM/Clang 3.2 закоммичен в HEAD FreeBSD 10-CURRENT. Релиз FreeBSD 9.1 задерживается, видимо, из-за подготовки бэкпортирования LLVM/Clang 3.2 в 9-STABLE и последующей сборки релиза с новой версией компилятора.
     
  • 1.58, iZEN (ok), 21:37, 10/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    LLVM/Clang 3.2 10 января 2013 года портированы на FreeBSD:
    http://www.freshports.org/devel/llvm/
    http://www.freshports.org/lang/clang/
     
  • 1.59, iZEN (ok), 17:17, 15/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    14 января 2013 года в базовой системе FreeBSD 9.1-STABLE обновлён LLVM/Clang 3.1 до версии 3.2.
    http://svnweb.freebsd.org/base?view=revision&sortby=date&revision=245431
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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