Clang - C на LLVM
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.06.07 11:09
Оценка: 31 (3)
Наткнулся на интересную презентацию по поводу сабжа. Там на примере carbon.h (Apple всёж ) сравнивается Clang и традиционный gcc, конечно, не в пользу последнего
Re: Clang - C на LLVM
От: Cyberax Марс  
Дата: 01.06.07 12:32
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Наткнулся на интересную презентацию по поводу сабжа. Там на примере carbon.h (Apple всёж ) сравнивается Clang и традиционный gcc, конечно, не в пользу последнего

Они бы еще нормальный C++ сделали Насколько я понял, CLang понимает пока только С и Objective C.

Ну а то что GCC — это помойка, уже давно известно. Все-таки более 15 лет развития сказываются. GCCшники одно время хотели выбросить слой работы с деревьями на LLVM, но потом оно у них все завяло (и к лучшему, наверное).

Кстати, LLVM умеет использовать GCC для компиляции своего байт-кода.
Sapienti sat!
Re[2]: Clang - C на LLVM
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.06.07 12:40
Оценка:
Здравствуйте, Cyberax, Вы писали:

[cut]

А мне вот интересно — будет ли выгодней использовать Clang вместо GCC для языков, которые используют сишный код в качестве пром. результата компиляции? Или же всё это изврат и правильней прямо транслировать в LLVM?
Также вопрос — есть ли разница между результатах C->(GCC)->Native и C->(Clang)->(LLVM)->Native?
Re[3]: Clang - C на LLVM
От: Cyberax Марс  
Дата: 01.06.07 16:22
Оценка: 1 (1)
Здравствуйте, Курилка, Вы писали:

К>А мне вот интересно — будет ли выгодней использовать Clang вместо GCC для языков, которые используют сишный код в качестве пром. результата компиляции? Или же всё это изврат и правильней прямо транслировать в LLVM?

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

Но лучше написать сразу транлсятор в LLVM (это не так уж и сложно) — получим кучу преимуществ: более мощные оптимизации (за счет управления алиасингом и т.п.), возможность интеграции отладчика (в LLVM есть поддержка кастомных отладочных символов), ну и упрощение всей системы.

К>Также вопрос — есть ли разница между результатах C->(GCC)->Native и C->(Clang)->(LLVM)->Native?

Можно сделать, чтобы разницы не было (с помощью цепочки C->(Clang)->(LLVM)->GCC->Native ). В некоторых случаях LLVM выиграет за счет более крутой межпроцессной оптимизации, в некоторых случаях победит GCC за счет большего количества фич. Лично я бы для статической компиляции воспользовался бы цепочкой с GCC.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.