在LLVM中編寫pass的詳細教程(1)

2021-08-11 07:18:47 字數 663 閱讀 7607

可能你已經大概知道了llvm中pass是什麼,那麼你或許正躍躍欲試想在llvm中實際編寫乙個pass試試;即使你對pass的概念還很朦朧,實際practice一下或許也恰恰可以幫助你更加形象和具體的理解llvm中的pass。所以本文就是要向你介紹如何在llvm中實際編寫並使用乙個pass的入門教程。特別說明,以下示例是在macos上完成的,但其實在ubuntu上也同樣適用。

llvm 的pass框架是llvm系統的乙個很重要的部分。llvm的優化和轉換工作就是由多個pass來一起完成的。類似流水線操作一樣,每個pass完成特定的優化工作。 要想真正發揮llvm的威力,掌握pass是不可或缺的一環。llvm中pass架構的可重用性和可控制性都非常好,這允許使用者自己開發pass或者關閉一些預設提供的pass。總的來說,所有的pass大致可以分為兩類:分析和轉換分析類的pass以提供資訊為主,轉換類的會修改中間**。

假設你的llvm之安裝目錄為 ... .../llvm,那麼你首先在路徑 ... .../llvm/lib/transforms 中建立乙個子資料夾,例如名字叫做myhello。然後在此資料夾下建立如下三個檔案:cmakelists.txt、myhello.exports、myhello.cpp。因為llvm中

基於LLVM 分析Pass的製作

分析pass在實際不修改ir的情況下提供關於ir的更高階的資訊,而這些資訊可以被其他的分析pass使用來計算其結果,只要乙個分析的pass計算得出了結果,這個計算結果可以被不同的pass拿來多次使用,直到乙個pass改變了這個ir 我們先編寫下我們需要去進行測試的 int func int a,in...

編寫LLVM的後端 一)

本文件是指如何編寫乙個可以把llvm的中間表示轉換成乙個特定的機器或者其他語言的後端。對於乙個特定機器的 或者是組合語言或者是二進位制 llvm後端的是乙個和目標相關的 產生器,可以建立不同型別的目標處理器的輸出,如x86,powerpc,alpha,sparc。後端也可以用於產生針對cell處理器...

我的LLVM學習筆記 編寫LLVM demo

一 安裝llvm 二 使用clion建立demo工程 main.cpp 如下 include llvm ir verifier.h include llvm executionengine genericvalue.h include llvm executionengine interpreter...