Ich möchte die Zeigerwerte in LLVM IR analysieren.Wie vergleicht man Zeiger in LLVM-IR?
Wie in LLVM Value Class dargestellt,
Value
ist eine sehr wichtige LLVM-Klasse. Es ist die Basisklasse aller Werte, die von einem Programm berechnet wurden und die als Operanden für andere Werte verwendet werden können. Value ist die Superklasse anderer wichtiger Klassen wie Instruction and Function. Alle Werte haben einen Typ. Type ist keine Unterklasse von Value. Einige Werte können einen Namen haben und gehören zu einigen Modulen. Durch Setzen des Namens auf den Wert wird die Symboltabelle des Moduls automatisch aktualisiert.
Um zu testen, ob ein Value
ein Zeiger ist oder nicht, gibt es eine Funktion a->getType()->isPointerTy()
. LLVM bietet auch eine LLVM PointerType class, jedoch gibt es keine direkte API, um die Werte von Zeigern zu vergleichen.
Also frage ich mich, wie diese Zeigerwerte zu vergleichen, um zu testen, ob sie gleich sind oder nicht. Ich weiß, es gibt AliasAnalysis
, aber ich habe Zweifel an den AliasAnalysis
Ergebnissen, also möchte ich es selbst validieren.