← All posts tagged clang

arrowdodger
GNU У нас во фряхе некоторое время сломан gdb. Сломался он со времени установки clang как дефолтного компилятора.
А почему? <sarcasm>Кланг, кривой наверное.</sarcasm>

[17:30] <dim> + if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) != 0)
[17:30] <dim> + {
[17:30] <dim> + / For non-GCC compilers expect their behavior is not compliant. /
[17:30] <dim> +
[17:30] <dim> + return 0;
[17:30] <dim> + }
[17:31] <dim> it it is not GNU, we won't help you! ;-)
[17:33] <dim> yep, that's the problem
[17:37] <dim> if it doesn't find the magic "GNU" string in cu->producer, it invalidates all the .debug_loc information.
arrowdodger
llvm clang Вчера только наведывался в CERN посмотреть что они там запилили в cling — "интерпретаторе" С/С++ на базе кланга. А сегодня они заявили, что он стабилен и хотят пушить патчи в мэйнстрим.
lists.cs.uiuc.edu
Очень надеюсь, что скоммитят.
arrowdodger
C++ coding Оказывается, map<char *, T> надо юзать очень осторожно. Особенно в случае, когда ты ключ берешь из string constant. В некоторых конпеляторах (GCC 4.2.1)
char* a="asdasd";
, объявленное в разных модулях имеет разное значение. Как следствие, если сделать map[a], то туда добавляется новое значение, а не достается старое.
Это было дефолтным поведением в MSVC, поэтому я сначала даже не заподозрил подвоха. Зато clang делает все правильно, надо окончательно на него перелезать.
arrowdodger
llvm clang 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