to post messages and comments.

Дурацкий шланг! Не дополняет мне имя функции, потому что я еще нужный хидер не подключил.
Так у меня же в соседнем окне эта функция, я сначала напишу вызов, а потом подключу хидер. Мне так удобнее!

— Вот в vim можно при сборке включить опцию +cscope, и появится команда :cscope, и можно будет использовать :cscope. Идёт 2014-й год, а в VIm всё еще нет опции +clang, чтобы слинковаться с libclang, чтобы всё работало искоробки без использования костыльных плагинов.
— Что сказать-то хотел? Услышал слова clang и cscope, и хочешь показать, какой ты умный?

Очередной раз поражаюсь, как в линуксе все просто и удобно, кукареку, пакетные менеджеры, кудах.
Наслушался про то, что в линуксе щас во всех блокнотиках для редактирования c/c++/objc есть возможность крутого автодополнения с помощью clang. Ну здорово, решил сначала попробовать под вендой, ибо было сказано, что модный блокнотик sublime text умеет работать и в венде. Скачал, поставил package control, поставил SublimeClang, попробовал — нууу, типа работает, только надо руками прописывать пути к заголовкам, которые этот самый libclang будет парсить. Что-то даже прописал, потом устал и забил.
Тут случайно наткнулся на подобный модуль для emacs. Ну emacs мне ближе, раньше пользовался, решил еще покрасноглазить, в итоге руками собрал clang, руками собрал emacs-clang-complete-async. Не работает, падает. Ну ладно, тут начинается самое веселое, решил попробовать тоже самое в линуксе, ведь там все просто и само должно заработать. Нуу, разве что всего лишь emacs-clang-complete-async руками собрать. Ну собрал, это я уже и под вендой делал. Оно даже заработало, ничего больше не настраивая! Только почему-то ВНЕЗАПНО перестало, и в логах емакса тишина. Ну да ладно. Решил попробовать sublime text здесь же. А тут... а тут он не работает. Не ставится на него SublimeClang. Надо собрать руками отдельный петон, через какой-то еще pythonbrew новомодный, подсунуть его отдельно к sublime text, и тогда возможно заработает. Написано баг известный, в принципе в любом линуксе, но чинить никто не собирается. Пиздец какой-то. И так в этом линуксе всё. Не удивлюсь, что еще через пару лет в линуксе и ls начнет глючить.

А я и не знал, что такая штуковина: embed.cs.utah.edu существует и будет доступна изкоробки в clang 3.3. Вкратце, оно занимается тем, что добавляет проверки на целочисленные переполнения (undefined behaviour, как никак, и всё такое) и выполняет их в рантайме, давая хороший выхлоп с указанием проблемных мест в коде. Автор говорит, что удалось найти кучу таких переполнений во всём опенсорсном коде, до которого руки дотянулись (например, около 71 переполнений в GCC).

P.S. Узнал из этой статьи: "Nobody Expects the Spanish Inquisition, or INT_MIN to be Divided by -1" blog.regehr.org — она тоже интересная.

От скуки собрал llvm+clang для кросскомпиляции под arm. Собрало фирмварь для stm32 с первой попытки, с -Os получилось процентов на 15 жирнее того, что сделал гцц. Работоспособность еще не проверял, though.
Алсо, crossdev'у не хватает умения собирать кросс-шланг, а когда собирал руками — забыл сказать --enable-shared --with-optimize-options=opimized, в итоге make install высрал 3.7 Гб.

Попробовал автокомплит на основе clang. Fail. Куча ругани на "no member named $type in global namespace" и нифига не работает.
Хотя мб код под андроидовский NDK — это слишком для него?..

Полез в API к clang, и что я там вижу?:

void 	SetExternalSource (ExternalHeaderFileInfoSource *ES)
 	Set the external source of header information. 
void 	setTarget (const TargetInfo &Target)
 	Set the target information for the header search, if not already known. 

ШТОЭТАБЛЯДЬ за стиль кодирование такой? Картинка в тему: 
http://www.examiner.com/images/blog/wysiwyg/image/jackie(8).jpg

Есть такой быдлокод: paste.pocoo.org
Скастовал на него gcc -m32 -O0, дизасмлю и вижу, что после вызова printf стоит тупо ноп и выход из main, даже goto проебалось, алсо вызов f() делает call по адресу куска вычисления code_size, хуй знает почему — т.е. все тупо зацикливается.
Попробовал тот же быдлокод скормить шлангу — получил _code_start = 0x01 и соответственно сегфолт. От исходной асмовставки не нашел даже нопа.
ЧЯДНТ ЧЯДНТ

Ну и ну. lighttpd, собранный clang'ом, работает так, что cgit по cgi работает чуть лучше, чем никак, тогда как собранный gcc — нормально. Причём раньше такой хуйни не было. Не было печали — апдейтов накачали!

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

а, ну да. у меня же Arch, там специально собирают программы так, чтобы ничего не работало, да.

поцоны, где я проебался?

код:
uint8_t a[] = {1, 2, 3, 4, 5, 6};
uint8_t* bt = &a[0];

uint32_t res = ((bt++)<<16) | ((bt++)<<8) | *(bt++);
printf("Result: %x\n", res);

bt = &a[0];
uint32_t res1 = (bt[0]<<16) | (bt[1]<<8) | bt[2];
printf("Result1: %x\n", res1);

[[email protected]]:/tmp $>> clang bb.c
[[email protected]]:/tmp $>> ./a.out
Result: 10203
Result1: 10203
[[email protected]]:/tmp $>> gcc bb.c
[[email protected]]:/tmp $>> ./a.out
Result: 10101
Result1: 10203

Почему так?

А чё, шланг не умеет исключений?
"/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|76 col 7 error| cannot use 'try' with exceptions disabled
/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|89 col 7 error| cannot use 'try' with exceptions disabled
/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|102 col 7 error| cannot use 'try' with exceptions disabled
/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|115 col 7 error| cannot use 'try' with exceptions disabled
/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|128 col 7 error| cannot use 'try' with exceptions disabled
/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|141 col 7 error| cannot use 'try' with exceptions disabled
/usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h|154 col 7 error| cannot use 'try' with exceptions disabled"
Настройги плагина такие:
let g:clang_complete_auto = 1
let g:clang_complete_copen = 1
let g:clang_hl_errors = 1
let g:clang_periodic_quickfix = 1
let g:clang_snippets = 1
let g:clang_exec = 'clang++'
let g:clang_user_options = '-fexceptions -Iмного много папок'

Clang has recently gotten much-improved support for the upcoming C++0x standard. In particular, top-of-tree Clang now supports a number of C++0x features:

— Rvalue references (including rvalue references for *this)
— Variadic templates
— Inline namespaces
— Late-specified return types
— Decltype