llvm-diff - LLVM 結構化 ‘diff’

概要

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

描述

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

如果輸入模組的名稱以 '.ll' 結尾,則會將其解譯為組合語言檔案;否則將以位元碼檔案讀取。

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

llvm-diff 藉由比較兩個函式的基本區塊來比較它們,從進入區塊開始。 如果終結器似乎匹配,則會比較對應的後繼者;否則它們將被忽略。 此演算法對控制流程的變更非常敏感,這往往會阻止偵測到任何下游變更。

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

結束狀態

如果 llvm-diff 在模組之間找不到差異,它將以 0 結束並且不產生任何輸出。 否則,它將以非零值結束。

錯誤

許多重要的差異,例如連結或函式屬性的變更,都未被診斷出來。

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