2017-06-01 39 views
0

我一直在探索LLVM優化最近,但有一個小問題:LLVM優化傳遞需要使用什麼級別?

我們怎麼知道,一個內置的通過(不LLVM通行證,我們寫的),可以在功能層面(使用FunctionPassManager)應用,或模塊級別等?

示例 - 如萬花筒教程4中可以看出:

TheFPM->add(createCFGSimplificationPass()); 

這一個是相當明顯的,它應該是在函數級別但對於其他的通行證?他們是否都準備好在任何級別(BasicBlock,Function,Module等)正確工作?

+0

我會建議你讓你的問題標題更具體,否則它太寬泛。 –

+0

感謝您的建議,我現在改變了它。 – mal

回答

1

我想你可以通過查看源代碼找到。 例如,here是SimplifyCFGPass的代碼,它繼承了FunctionPass,here是MemoryDe​​pendencyAnalysisPass的源代碼,正如您所看到的,它是一個函數級別傳遞。

+0

當我獲得超過15的聲望後,我會滿意答覆。非常感謝,這很有幫助。 – mal