タグ

llvmに関するmizdraのブックマーク (4)

  • Rust で Profile-Guided Optimization やってみた - はやくプログラムになりたい

    TLDR Rust で実装した Wasm インタープリタで PGO 試したら 0〜10% ぐらい速くなった Profile-Guided Optimization (PGO) とは PGO はコンパイラの最適化の手法のうちの1つですが,プログラムを実行した後に行うという点で少し他と異なります. まずは普段どおりの最適化オプションでプログラムをビルドする プログラムを実環境で動かし,profile data を取る 再度プログラムをビルドしなおす.ただし,ここの最適化では 2. で収集した profile data に基づいてインライン化やレジスタ割り当てなどを行う より最適化されたプログラムが出来上がる このように,実世界でどう実行されるかをフィードバックした最適化をかけて再ビルドすることで,プログラムのビルド時で完結していた従来の最適化よりも進んだ最適化をかけられるようにするというもので

    Rust で Profile-Guided Optimization やってみた - はやくプログラムになりたい
  • ccov: printfデバッグを支援するツール - Blog posts by @retrage

    ここではコードカバレッジ計測を元にしたprintfデバッグ支援ツールであるccovを作ったので紹介する. コードは以下である. github.com gcov, llvm-covなどはコードカバレッジを測定できるツールである. これらは基的にOS上で動き,簡単にコンパイラを入れ替えたりログを生成できること前提としている. 一方でOSや組み込みの開発ではデバッガが利用できずprintfデバッグをせざるを得ない場合がある. printfデバッグでは対象のコードに対して どこまでコードが実行されているかを調べるためにprintfを挿入していく. このときprintfの挿入方法にはいくつかある. 以下のようなコラッツの問題を元にした関数を考える. void collatz(int n) { while (n != 1) { if (n % 2 == 0) { n /= 2; } else { n

    ccov: printfデバッグを支援するツール - Blog posts by @retrage
    mizdra
    mizdra 2020/03/11
  • Exception Handling in LLVM — LLVM 20.0.0git documentation

    Exception Handling in LLVM¶ Introduction¶ This document is the central repository for all information pertaining to exception handling in LLVM. It describes the format that LLVM exception handling information takes, which is useful for those interested in creating front-ends or dealing directly with the information. Further, this document provides specific examples of what exception handling infor

  • LLVMで例外を実装するには - yhara.jp

    LLVMを使った自作言語に例外を入れることを考えてた。結論からいうとCrystalのソースを真似するのでよさそう。 Crystal → libunwind → _Unwind_RaiseException C++ → __cxa_throw → libunwind → _Unwind_RaiseException _Unwind_RaiseException等の仕様はここ。http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.htmlItanium C++ ABI」という名前ではあるけれど、Level I, II, IIIのうちのLevel I部分(_Unwind_RaiseException等)はC++に限らない言語独立なAPIになっている。__cxa_throwはLevel IIで、C++用のもの(であるけれど、場合によってはこれが使えるこ

  • 1