タグ

llvmとclangに関するmanabouのブックマーク (5)

  • 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という独立したフォーマットを開発し、これは標準化されて、多くのコンパ

  • Clangでファジング (-fsanitize=fuzzer) - Qiita

    Clang開発版にlibFuzzerが新しいサニタイザとして取り込まれた。clang -fsanitize=fuzzerで使える。 ファジングとは ファジング (fuzzing) はテスト手法のひとつ。おかしなデータを自動的に大量生成してプログラムへ入力し、クラッシュを誘発することでバグをあぶりだす。 libFuzzerはファジングをおこなうためのライブラリ。 trunk版のclangをインストール Clangのtrunk版をインストール: svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm svn co http://llvm.org/svn/llvm-project/cfe/trunk llvm/tools/clang svn co http://llvm.org/svn/llvm-project/compiler-rt/tr

    Clangでファジング (-fsanitize=fuzzer) - Qiita
  • LLVM APIを使ってみよう! 〜 Brainf**kコンパイラをIRBuilderで書き直してみた 〜 - プログラムモグモグ

    先日LLVMの入門記事を書きました。 clangが吐くLLVM IR (Intermediate representation, 中間表現) を頼りに、Brainf**kのコンパイラを書いてみました。 itchyny.hatenablog.com この記事で書いたコードでは、直接printfでLLVM IRの命令を出力していました。 このステップを踏むことで、LLVM IRの命令をどう調べればいいかについて身についたと思います。 しかし、この「コンパイラ」は次のような問題がありました。 bf2llvmコマンドが出力するのがLLVM IRのために、lliやllcといったLLVM IRのランタイムやコンパイラが必要となる 最適化を行うにはさらにoptコマンドが必要になり、やはりLLVMツールチェインをインストールしている環境でしか使えない ソースコードから実行ファイルまでのパスの中で、LLVM

    LLVM APIを使ってみよう! 〜 Brainf**kコンパイラをIRBuilderで書き直してみた 〜 - プログラムモグモグ
  • llvm-clang環境のDockerを作ってDocker Hubにpushした。 - Qiita

    でclangやclang++が使えます。 きっかけ 某所で見た問題の解答をプログラムした結果をgccとclangでコンパイルして比較したくなったのだが、gccは公式Dockerがあるのにllvm-clangは公式Dockerが見つからなかったので、どうせならソースから自作してみようかと。 問題 //┏┳┳┳┳┓ //┣╋╋╋╋┫ //┣╋╋╋╋┫ //┣╋╋╋╋┫ //┣╋╋╋╋┫ //┗┻┻┻┻┛ //上記の6X6の通路を左上から右下へ到達する時に //同じ道を通らずにたどり着くルートは何通りあるか? //ただし、同じ交差点は何度通ってもいい 回答 解答はこれで、深さ優先探索と軽い枝切りで実装してます。 llvm-clang環境の作成 環境構築の手順は以下の通りです。 - Dockerfileを作成して - Docker imageを構築して - DockerHubにpushする Doc

    llvm-clang環境のDockerを作ってDocker Hubにpushした。 - Qiita
  • clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。

    先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認できる環境が手元に無いので、普通のarmv7-aで同じことを試しました。 ここで使ったコードとその結果はgistに貼りました。 https://gist.github.com/tetsu-koba/5835724 ソースコード int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } 1からnまでの総和を求める関数です。1から100までの総和が5050なのはガウス少年の逸話で有名ですね。 gcc 4.8.

    clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。
  • 1