clang

LLVM 3.3 がリリース

LLVM 3.3 がリリースされました。 Download LLVM 3.3 LLVM 3.3 Release Notes Clang 3.3 Release Notes 予定より2週間ほど遅れていたんですが無事にリリースされました。 既知の通り Clang 3.3 では C++11 の機能が完全実装されています。 ClangがC++11を完…

LLVM 3.3 は 6月5日にリリース予定

The LLVM Compiler Infrastructure LLVM 3.3 のリリーススケジュールは以下の通りです。 05月06日 - Branching for 3.3 release 05月06日〜11日 - Phase I testing 05月12日〜18日 - Bug fixing from Phase I 05月19日〜25日 - Phase II testing 〜Random wi…

Clang で実装されている C++1y を使用してみた

最新版の Clang では C++1y の機能がいくつか実装されているみたいなので試してみた。 現在、実装されている機能 Binary literals Member initializers and aggregates C++11 で実装された Uniform initialization と Member-initializers は併用して使用す…

ClangCheck を使用してソースファイルのエラー箇所を自動的に修正する

ClangCheck の -fixit オプションを使用すればエラーメッセージで出力される『did you mean 〜』の辺りをいい感じに修正してくれます。 [main.cpp] void func1(int n) const{ } int main(){ typedef int integer; integre n = 0; func(n); return 0 } [コマ…

ClangCheck をつかってみた

Clang の clang-tools-extra に含まれている ClangCheck を使ってみました。 ClangCheck は Clang の LibTooling を使用したシンタックスチェッカーです。 LibTooling - Clang 3.3 documentation ClangCheck - Clang 3.3 documentation [main.cpp] void func…

cpp11-migrator を試してみた

[追記] さっき気づいたんですが cpp11-migrate を行うとインクルードしているヘッダーファイル内も全て C++11 で書き換えられてしまうようです。 なのでインクルードしている標準ライブラリも書き換えられてしまうので注意して下さい。 回避方法はあるのかな…

clang_complete に定義ジャンプの機能が実装されたぽい

最近知ったんですが、clang_complete に定義へジャンプする機能が実装された(されはじめた)ぽいです。 ジャンプしたい名前にカーソルを合わせて で定義へと飛ぶことが出来ます。 で、わたしの環境でも軽く試してみたんですが、動作するケースもあれば動作…

clang に Generalized attributes が実装されていた

気がついたら clang の SVN に Generalized attributes が実装されたみたい。 C++98 and C++11 Support in Clang Generalized attributes Alignment support あと Alignment support も何か更新されたのかな。 Inheriting constructors はよ。

LLVM 3.2 がリリース

LLVM 3.2 がリリースされました。 ちょっと延期しましたけど、だいたい予定通りでしたね。 3.0 や 3.1 ほどの遅れはなかったです。 Download LLVM 3.2 LLVM 3.2 Release Notes Clang 3.2 Release Notes C++ のコンパイラとしては Clang 3.1 の時ほど目新しい…

LLVM 3.2 は 12月16日にリリース予定

The LLVM Compiler Infrastructure LLVM 3.1 リリースまでのスケジュールは以下の通り。 11月11日 - Branching for 3.2 release 11月12〜29日 - Phase 1 - release candidate testing 11月29日 - End of Phase 1, all features completed 11月30日〜 12月12…

LLVM/Clang ベースの clang-ctags

libclang を利用した ctags が開発されているらしい。 Announcing "clang-ctags" clang-ctags - github libclang の Python モジュール(cindex.py)を使用しているので Python で実装されているみたいですね。 ざっと見てみたところ Emacs で使用されている e…

自前で LLVM 3.1 をビルドした

関連:Experimental Clang Binaries for Mingw32/x86 でコンパイラが死んだ\(^o^)/ 上記の問題と LLVM 3.1 をソースコードからビルドした場合でもクラッシュすると聞いたので自前でビルドして試してみました。 ひとまず、上記の問題に関しては自力でビルド…

clang_complete で insert 時に する問題が修正された

関連:最新の clang_complete で insert 時に <CR> するとエラーになる clang_complete 側で修正されたみたいなので vimrc で再マッピングしなくてもエラーは出なくなりました。 早めに対応してもらってよかった。</cr>

最新の clang_complete で insert 時に するとエラーになる

clang_complete で insert 時に するとマッピングによってはエラーが出る場合があるみたいです。 原因はここら辺ぽい。 特に neocomplcache を使用していると inoremap <expr><CR> neocomplcache#close_popup() . "\<CR>" とマッピングしている人がいると思うので、この場</cr></cr></expr>…

Experimental Clang Binaries for Mingw32/x86 でコンパイラが死んだ\(^o^)/

[再現コード] template<typename T, int N> struct array{ T elems[ N ]; }; template<typename T, typename ...Args> array<T, sizeof...(Args)> make_array(Args... args){ return {{ args... }}; } int main(){ make_array<int>(1, 2, 3, 4); return 0; } [コンパイル出力] Assertion failed: isa<LabelDecl>(D) && "declaration not…</labeldecl></int></t,></typename></typename>

LLVM 3.1 がリリース

予定であれば先週リリース予定であった LLVM 3.1 がやっとこさリリースされました!!! これでもう llvm.org を F5 アタックする簡単なお仕事が終わりました。 Download LLVM 3.1 LLVM 3.1 Release Notes Clang 3.1 Release Notes あと一番気になっていた L…

LLVM/Clang 3.1 で追加される予定の C++11 の機能

一応、まだリリース前なのですが、これでほぼ間違いないでしょう。 LLVM/Clang 3.1 では新しく下記の C++11 の機能が実装されました。 [Language Feature] Initializer lists Lambda expressions Declared type of an expression - Incomplete return types …

clang 3.1(trunk) で Concurrency がいくつか実装された

clang 3.1(trunk) で Concurrency がいくつか実装されました。 実装されたのは以下の3つです。 Atomic operations Bidirectional Fences Allow atomics use in signal handlers こっちの方はあまり確認していなかったのでもしかしたら以前から実装されていた…

clang_complete でランタイムエラーが出た場合の対処方法

clang_complete で libclang.dll を使用する場合に Vim の終了時にランタイムエラーが出るという問題があるそうです。 対処方法は cmake に下記のオプションを追加してビルドして下さい。 [gcc 4.5.x] cmake.exe -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_…

clang_declared.vim を Vimプラグイン化した

[追記] リポジトリ名が typo ってたので変更しました。 既に git clone した方はお手数ですが再度取得し直して下さい。 (ノ∀`)アチャー [追記2] オプション名も typo していたので修正しました。 しにたい。 先日作成した c-index-test を使用した C++ の宣言に飛…

LLVM 3.1 は 5月14日にリリース予定

The LLVM Compiler Infrastructure LLVM 3.1 リリースまでのスケジュールは以下の通り。 4月16日 - Branching for 3.1 release 4月16日〜4月22日 - Phase 1 testing 4月23日〜4月29日 - Bug fixing for Phase 1 issues, all features completed 4月30日〜5月…

clang 3.1(trunk) に Forward declarations for enums が実装された

clang 3.1(trunk) に Forward declarations for enums が実装されました。 C++11 implementation status GIT mirror N2764 C++0x enumの先行宣言 - Faith and Brave - C++で遊ぼう [ソース] template<typename T> struct X{ enum E : T; E n; }; template<typename T> enum X<T>::E : T{</t></typename></typename>…

C++11 の Alignment support

そういえば、C++11 で追加される Alignment support の alignas が使えるコンパイラって clang 3.0 だけなんですね。 [ソース] #include <iostream> struct x{ alignas(4) int value; }; int main(){ std::size_t n = alignof(x); std::cout << n << std::endl; std::c</iostream>…

clang 3.1(trunk) に Universal character names in literals が実装された

user-defined literals の直後に追加されたみたいで気が付きませんでした。 文字列の中に直接文字コードを記述することが出来ます。 C++11 implementation status GIT mirror [ソース] #include <string> #include <cassert> int main(){ char16_t const* s = u"\u307b\u3080</cassert></string>…

clang 3.1(trunk) にユーザ定義リテラルが実装された

ねんがんの ゆーざていぎりてらるを てにいれたぞ! [C++11 Implementation status] GIT mirror [ソース] #include <iostream> unsigned long long int operator "" _twice(unsigned long long int n){ return n + n; } template<char... cs> std::size_t operator "" _len(){ retu</char...></iostream>…

clang 3.1 (trunk) に Unrestricted unions が実装された

されていました。 C++11 implementation status GIT mirror [ソース] #include <complex> union U{ U(){} ~U(){} int i; float f; std::complex<double> c; }; int main(){ U u; static_assert(sizeof(u) == 16, ""); return 0; } 着々と実装が進んでいるみたいですね。 ちな</double></complex>…

clang 3.1(trunk) に Initializer lists が実装された

[C++11 Implementation status] [ソース] #include <vector> #include <iostream> template<typename T> void disp(std::initializer_list<T> list){ for(auto&& n : list){ std::cout << n << std::endl; } } struct X{ X() : elems{1, 2, 3}{} int elems[3]; }; int main(){ std::vector<int> v =</int></t></typename></iostream></vector>…

clang 3.1(trunk) に Lambda expressions と Extending sizeof が実装された

ヒャッハー! [C++11 Implementation status] [ソース] #include <cassert> #include <algorithm> #include <iostream> struct X{ int value; }; int main(){ // Lambda expressions int v[] = { 1, 2, 3, 4, 5 }; int sum = 0; std::for_each(v, v+5, [&](int n){ std::cout << n << ", ";</iostream></algorithm></cassert>…

clang 3.1(trunk) で lambda expression がコンパイルできた

先日 constexpr のために trunk から clang のソースコードを落としてきてビルドしたんですが、lambda expression のコードもコンパイルする事が出来ました。 ひとまず、下記の様なコードだと問題ないなかったです。 [ソース] #include <vector> #include <algorithm> #include <iostream></iostream></algorithm></vector>…

neocomplcache-clang_complete

neocomplcache と clang_complete を併用して使用する事が出来る、neocomplcache-clang_complete というプラグインをつくりました。 [注意] 現在この問題は解決されました。 詳しくはこちらを参照下さい。 名前が安直なのは仕様です。 [問題点] 両プラグイン…