タグ

clangに関するt-murachiのブックマーク (15)

  • LLVMがWindowsのデバッグ情報フォーマットのPDBをサポート

    LLVM Project Blog: LLVM on Windows now supports PDB Debug Info この数年、clangをWindowsでソフトウェア開発するための世界級のツールチェインにするために尽力してきた。このことについては、すでに何度も書いてきたことだ。LLVMは完全なABI互換を実現した(ただしバグ互換ではない)。互換性を実現するのが難しい分野にデバッグ情報があるが、この2年間で、LLVMは飛躍的な発展をとげた。とりあえず結論を先に書くとこうだ。WindowsでClangを使うと、PDBデバッグ情報が出せる。 背景:CodeView VS PDB CodeViewは1980年台の中頃にMicrosoftによって考案されたデバッグ情報フォーマットだ。様々な理由で、他のデバッガーはDWARFという独立したフォーマットを開発し、これは標準化されて、多くのコンパ

    t-murachi
    t-murachi 2017/09/04
    「果たしてMicrosoft社内にPDBの詳細なドキュメントはあるのか」<ないだろうね^_^;
  • Visual StudioにClangフロントエンドがやってくる

    22日に書いたのだがあげ忘れていた。 Microsoft promises Clang for Windows in November Visual C++ update • The Register 先月のCppConでMicrosoftが発表した内容によれば、Visual StudioにClangがやってくるそうだ。 Microsoftは独自のプロプライエタリなC++コンパイラーを開発しているが、将来、Visual StudioでClangが扱えるようになるそうだ。 現在、AndroidやiOS開発用には、Visual StudioでもGCCやClangが使えるが、Windows用にもClangが提供されるらしい。 MSのC++コンパイラーには、フロントエンド部分(パースして内部表現に変換)とバックエンド部分(内部表現からコード生成)があるが、Clangが使われるのはこの内のフロントエ

    t-murachi
    t-murachi 2015/11/02
    なんにしても選択肢が増えるのはええことやな。
  • clang-format plugin for Visual Studio - C++でゲームプログラミング

    LLVM のサイトをあさってたら clang-format plugin for Visual Studio というものを発見した。 LLVM Snapshot Builds clang-format plugin for Visual Studio(ダウンロード) 気になるけどいま手元に Visual Studio 環境がないのでぐぬぬ。 誰か試してみて下しあ。 しかし、LLVM 3.4 あたりから Visual Studio の方にも力が入ってきていますねー。

    clang-format plugin for Visual Studio - C++でゲームプログラミング
    t-murachi
    t-murachi 2014/07/27
    えっ? えっ? これって、 cl.exe を clang に置き換えてしかも IntelliSense も clang ベースで動いてくれるようにできるってこと? (違ったらごめん
  • FreeBSD 10はGCCからLLVM/Clangに移行する

    [Phoronix] FreeBSD 10 To Use Clang Compiler, Deprecate GCC FreeBSDのGCC離れが加速しているようだ。FreeBSD 10では、Clangがデフォルトのコンパイラーとなり、GCCはdeprecated扱いとなる。FreeBSDの思想からすれば、GNUのツールチェインからなるべく離れたいのは分かる。Clangのライセンスは、FreeBSDにとって非常に都合がいい。 すでにFreeBSDのカーネルは、Clangによって警告なしでコンパイルが通るそうだ。FreeBSDのパッケージも、「Clangでビルドできなければバグ」とみなして、問題の洗い出しを進めているそうだ。 LLVMとClangは、最近、目覚しい発展をしている。GCCがコードベースのモジュール化を検討するほど危機感を持つのも分かる。 その他のFreeBSDの動向については、

  • GCC4.8はClangに近づく - にゃははー

    GCC4.8からdiagnostic messageを改良する動きが出ています。 http://gcc.gnu.org/wiki/ClangDiagnosticsComparison GCC4.6からdiagnostic messageの改良が始まっていましたが、これまでのは例えば struct S { ... snip ... } int i; というコードで意味不明なエラーメッセージが出ていたのを、セミコロンが抜けているといった質的なメッセージに修正するといったものでした。 $ cat hoge.c struct S { } int i; $ gcc-4.4 hoge.c hoge.c:5: error: two or more data types in declaration specifiers $ gcc-4.6 hoge.c hoge.c:5:1: error: expec

    GCC4.8はClangに近づく - にゃははー
    t-murachi
    t-murachi 2012/04/27
    ライバルの存在ってすばらすぃ…
  • gcc-4.7におけるnon-satatic data member initializer とthis

    C++11ではnon-static data member initializerが導入され、クラスの初期値設定をよりわかりやすく行うことが出来るようになっています。 struct X { int a = 10; // Xの初期値は10 X() : a(10) /* これと同じ */ {} }; この初期化子ではthisを使用することもできます。 struct X { size_t sz = sizeof(*this); // これは可能 int arr[sizeof(*this)];  // でもこれは不可 }; さて、gcc-4.7では以下のコードのコンパイルが通ってしまいます。 struct X { void f() { struct Y { size_t sz = sizeof(*this); // Yのサイズ int arr[sizeof(*this)]; // エラーのはずだが

    t-murachi
    t-murachi 2012/04/17
    この bug はちょっと恐いな…。
  • 次期 C++ ではポインタ演算は定数式になるようだ/次期 C++ の constexpr 化を考える - ボレロ村上 - ENiyGmaA Code

    §5.19 Constant expressions (N3290 より抜粋) 2 A conditional-expression is a core constant expression unless it involves one of the following as a potentially evaluated subexpression (3.2), but subexpressions of logical AND (5.14), logical OR (5.15), and conditional (5.16) operations that are not evaluated are not considered [ Note: An overloaded operator invokes a function.-end note ]: (中略) a subtract

    次期 C++ ではポインタ演算は定数式になるようだ/次期 C++ の constexpr 化を考える - ボレロ村上 - ENiyGmaA Code
    t-murachi
    t-murachi 2012/04/12
    これはインパクト大きいな… そして clang …w
  • LLVM 3.1 は 5月14日にリリース予定 - C++でゲームプログラミング

    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月06日 - Phase 2 testing 5月07日〜5月13日 - Addressing Phase 2 5月14日 - Release of 3.1! 予定通りであれば、ちょど C++ Now! 開催中に LLVM 3.1 がリリースされることになりますね。 まぁ LLVM 3.0 は1ヶ月弱ほどリリースが遅れましたが。 C++11 の言語機能は全部入るかしら…? あと Windows

    LLVM 3.1 は 5月14日にリリース予定 - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/04/06
    Ubuntu に載るとしたら早くても 12.10 辺りからかなぁ…
  • Vim で C++ の宣言箇所へ飛ぶ - C++でゲームプログラミング

    libclangを使ってみる。 - only 1 truth 上記のサイトで初めて知ったんですが、llvm/clang に含まれている c-index-test という tools を使用すれば C++ で宣言位置を取得する事が出来るみたいなので、Vim script で簡単に実装してみました。 c-index-test.exe は、llvm/clang をビルドすれば出力されています。 clang 3.1(trunk) でテストしましたが多分他のバージョンでも問題ないと思います。 (ただし、C++11 のコードの場合は clang のバージョンに依存するので注意して下さい。 [動作環境] clang c-index-test llvm/clang をビルドすれば生成されます neocomplcache インクルードされているヘッダーファイルを取得するために使用 [インクルードディレクトリ

    Vim で C++ の宣言箇所へ飛ぶ - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/04/05
    これは便利。
  • clangにinheriting constructorが実装されない理由

    Clangにopaque-enum-declarationがコミットされた。これで、残す機能はあと2つ、AttributeとInheriting constructorsだ。おそらく、最後に残るのはInheriting constructorsになるだろう。なぜか。誰も興味がないからだ。 freenodeでDouglas Gregorとチャットしていてこれを聞いたのだが、Inheriting constructorsが未だに存在しない理由は、興味を持つ者がほとんどいないからだそうである。それに、Inheriting constructorsの文面には、未だに曖昧な部分もあるとか。 実は、Inheriting constructorsとほぼ同等機能を、Variadic Templatesによってエミュレートできるのだ。これは、Douglas Gregorもペーパーで書いている。 US-65:

    t-murachi
    t-murachi 2012/03/28
    humm...
  • GCC 5はモジュール化できるか

    [Phoronix] Talk Of GCC 5.0 To Be Modular, More Like LLVM David Malcolm - GCC 5? (was Re: GCC 4.7.0RC: Mangled names in cc1) 聞説、今のGCCのコードは、やや悲惨な部類に入るらしい。十分な実績があり正しく動くのは確かだが、コードはほとんどCで書かれており、名前空間もなく、グローバルな状態が多く、スレッドもない。これはつまり、GCCは他のソフトウェアに組み込むのが難しい。 一方、LLVMは、設計段階からモジュール化を念頭に置いており、GCCよりはるかに後発なのにもかかわらず、他のソフトウェアに組み込む用途で広く使われている。たとえば、 MesaのGallium3Dとか、OpenCLとか、Monoとかで、JITコンパイルを実現するために、すでに使われている。他にもLLVMを

    t-murachi
    t-murachi 2012/03/21
    humm... やっぱり未来は clang の方が明るいのかなぁ…。
  • ちょっとみないうちにClangがすごいことになってる

    freenodeでチャットしていたら、Clang開発者の一人から、Clangは現時点で最も優れたC++11コンパイラーである、と言われた。またまたご冗談を。たしか数ヶ月前に確認した時、ClangはGCCより実装している機能の数で劣っていたはずだ。Clangには確かに将来性を感じるが、まだまだ時間が掛かるだろう。どれ、どれだけ進んだか、一応確認してやるか、と、Clangの状況を確認してみた。 Clang - C++98 and C++11 Status なんだと! コア言語では、Forward declarations for enumsとGeneralized attributesとInheriting constructors以外すべて実装し始めているではないか。このうち、ユーザーにも分かりやすい重要な機能はinheriting constructorぐらいなので、実質残すところの機能は

    t-murachi
    t-murachi 2012/03/18
    これについては、 osyo-manga タソがブログで追ってて下さってたおかげでおいらも知ってた。
  • clang 3.1(trunk) に Universal character names in literals が実装された - C++でゲームプログラミング

    user-defined literals の直後に追加されたみたいで気が付きませんでした。 文字列の中に直接文字コードを記述することが出来ます。 C++11 implementation status GIT mirror [ソース] #include <string> #include <cassert> int main(){ char16_t const* s = u"\u307b\u3080ほむ"; assert(s == std::u16string(u"ほむほむ")); return 0; } clang の進化が止まらない。 [コンパイラ] clang++ (LLVM) 3.1 20120311(trunk) [参照] http://d.hatena.ne.jp/faith_and_brave/20081009/1223548246 http://www.yourname.

    clang 3.1(trunk) に Universal character names in literals が実装された - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/03/11
    やっとキタコレ(;_;)/
  • constexpr 関数内ではローカルクラスが定義出来ない - C++でゲームプログラミング

    実は勘違いしていた C++11 の仕様シリーズ。 タイトル通りなんですが、constexpr関数内ではローカルクラスを定義することは出来ません。 constexpr int func(){ // clang3.1 error: types cannot be defined in a constexpr function class X{}; return 10; } そんな感じでこれをそのまま使うのはボツかなぁ…。 まぁ関数の外でクラス定義してしまえばいいんですが。 ちなみに gcc4.7 だと上記のコードでも問題なく動いてしまいます。 [おまけ] ついでなので『constexpr でエラー出力』を clang3.1 でも試してみました。 [ソース] struct error_division_by_zero{ int operator()() const{ throw("divisio

    constexpr 関数内ではローカルクラスが定義出来ない - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/03/05
    GCC いろいろできすぎだろ… 気を付けないとなぁ…。
  • clang 3.1(trunk) に Initializer lists が実装された - C++でゲームプログラミング

    [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 = {1, 2, 3, 4, 5}; std::vector<std::vector<int>> vv = { {0, 1, 2}, {3, 4, 5}, {7, 8, 9} }; disp({1, 2, 3}); X x; for(auto&& n :

    clang 3.1(trunk) に Initializer lists が実装された - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/02/27
    clang ペース速いな…。
  • 1