llvm-diff - LLVM 結構化「差異」

語法

llvm-diff [選項] 模組 1 模組 2 [全域名稱 …]

說明

llvm-diff 比較兩個 LLVM 模組的結構,主要關注函數定義上的差異。不重要的差異,例如全域變數順序或區域變數名稱的更改,將被忽略。

如果輸入模組的名稱以「.ll」結尾,則將其解釋為組譯檔;否則將其讀取為位元碼檔案。

如果給定全域名稱列表,則僅比較具有這些名稱的值;否則,將比較所有全域值,並針對僅出現在其中一個模組中的全域值產生診斷訊息。

llvm-diff 通過比較基本區塊來比較兩個函數,從入口區塊開始。如果終止符看起來匹配,則比較相應的後繼者;否則將忽略它們。此演算法對控制流程的更改非常敏感,這些更改往往會阻止檢測到任何下游更改。

llvm-diff 旨在作為 LLVM Pass 和前端編寫者的除錯工具。它沒有穩定的輸出格式。

結束狀態

如果 llvm-diff 沒有發現模組之間的差異,它將以 0 退出並且不產生任何輸出。否則它將以非零值退出。

錯誤

許多重要的差異,例如連結或函數屬性的更改,不會被診斷出來。

記憶體行為的更改(例如,合併載入)可能會導致檢測到的區塊差異很大。