原文:LLVM筆記(3) - PASS

. pass的概念 在LLVM中優化以pass形式實現, 每一個pass代表一種優化. pass分為兩類, 一類是分析 analysis pass, 負責收集信息共其它pass使用, 輔助調試或使程序可視化 另一類是變換 transform pass, 改變程序的dataflow controlflow. LLVM中實現了幾十種優化pass, 其中許多pass運行不止一次. analysis p ...

2019-06-14 22:05 4 1564 推薦指數:

查看詳情

LLVM使用其他Pass的結果

之前的工作一直集中在clang中,最近有點空閑時間,又重新熟悉了一下Pass的書寫過程。(參考LLVM CookBook和http://llvm.org/docs/WritingAnLLVMPass.html) 比如要實現一個基本的讀取函數名的Pass,比如FuncBlockCount.cpp ...

Sun Jun 30 09:18:00 CST 2019 2 551
LLVM一個簡單的Pass

由於新版LLVM(9.0.0),無法直接調用Util 自帶的 LowerSwitch 了,所以這里,我自己弄了一個, 主要功能是展開Switch,把它變成if else,理論上其實沒啥區別,但是實際上在LLVM的角度上看,區別很大, switch 實際上是一條 ...

Fri Jan 10 09:45:00 CST 2020 0 262
LLVM 筆記(五)—— LLVM IR

ilocker:關注 Android 安全(新手) QQ: 2597294287 LLVM 的 IR (Intermediate Representation) 是其設計中的最重要的部分。優化器在進行代碼優化時所進行的分析和轉換都是針對 IR 的。 在設計 IR 時,考慮到了很多明確的目標 ...

Sun Oct 25 22:29:00 CST 2015 0 2166
開發和調試第一個 LLVM Pass

1. 下載和編譯 LLVM LLVM 下載地址 http://releases.llvm.org/download.html,目前最新版是 6.0.0,下載完成之后,執行 tar 解壓 llvm 包: 1 2 ...

Tue Feb 05 21:22:00 CST 2019 0 616
LLVM11.0.0編譯,集成Pass框架

編譯方法,前置工作。。。 https://www.cnblogs.com/suanguade/p/13694216.html 后兩步其實不用做,然后就可以編譯了, 如果需要編譯”Compiler-RT“相關的庫, 需要做如下修改, L:\LLVM ...

Sun Oct 18 11:43:00 CST 2020 0 469
LLVM筆記(2) - IR

1. 什么是IR IR(intermediate representation)是LLVM獨創的中間表達式. 經典的compiler架構由前端frontend(讀入源代碼, 通過詞法, 語法與語義分析建立AST), 中端optimizer(優化模塊)與backend(通過指令選擇, 寄存器分配 ...

Thu Apr 11 06:44:00 CST 2019 0 1000
LLVM筆記(1) - TableGen

1. 什么是tablegen tablegen是llvm用於開發和維護編譯器中公共特性的條目(e.g. 指令描述, 寄存器描述)的代碼, 使之靈活的描述與構造的自動化工具. 其本質是一個parser, 將輸入的td文件轉化為特定的數據結構后再輸出為易於閱讀的cpp代碼. 更多介紹可見http ...

Mon Apr 08 03:23:00 CST 2019 0 968
LLVM 筆記(二)—— PHI node

ilocker:關注 Android 安全(新手) QQ: 2597294287 什么是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,靜態一次性賦值) 方式表示。意思是所有變量都只能被賦值一次,這樣做主要是便於后期的代碼優化 ...

Wed Oct 21 19:33:00 CST 2015 0 3492
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM