看到以前的一篇日期是2020年,一些情感如鯁在喉。好久沒有寫筆記了,接下來準備重啓筆記計劃,可能也會偷偷發發論文筆記

LLVM 學習

LLVM 版本

commit ea42c4ac6a24c28fc12d5373a851ff376ea452cf (HEAD -> main)
Author: Paul Walker <paul.walker@arm.com>
Date:   Fri Sep 8 16:14:58 2023 +0000

    [SVE] Precommit test to show missing initialisation of call operand.
    
    When calling func_f8_and_v0_passed_via_memory the memory used to
    hold the first vector operand is allocated but not initialised.

LLVM 源碼結構

├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.TXT
├── README.md
├── SECURITY.md
├── bolt
├── build
├── build-llvm
├── clang
├── clang-tools-extra
├── cmake
├── compiler-rt
├── cross-project-tests
├── flang
├── install
├── libc
├── libclc
├── libcxx
├── libcxxabi
├── libunwind
├── lld
├── lldb
├── llvm
├── llvm-libgcc
├── mlir
├── openmp
├── polly
├── pstl
├── runtimes
├── third-party
└── utils

部分源代碼結構

  • bolt:Meta developed a post-link optimizer with feedback-driven optimizations (FDO) and link-time optimizations (LTO)。通俗的說就是把編譯後的信息用於編譯期。關於這個 Meta 發表了相關文章
  • clang-tools-extra:内容和目錄的名字一樣,可惜我只認得 clangdclangdlanguage server ,它提供了 IDE 的一些功能比如交叉索引等等,讓 vscode 更適合閲讀某些源代碼
  • clang:適用於 C 家族的編譯器前端
  • compiler-rt:提供了語言獨立的庫,如 fuzz 庫
  • libc,libclc,libcxx,libcxxabi:提供了一些庫給 C,C++等語言
  • libunwind:提供了棧展開,可以用於異常處理
  • lld:LLVM linker
  • lldb:LLVM debugger
  • mlir:用於拓展 LLVM IR 在編譯時丟失信息的問題,這麽看來和 bolt 有一定的相似性。
  • polly:Polly is a high-level loop and data-locality optimizer and optimization infrastructure for LLVM https://polly.llvm.org/

參考資料