2016-04-26 8 views
1

Für eine theoretische Studie habe ich Meet über alle Pfad für konstante Ausbreitung implementiert. Da das Gitter der konstanten Propagation nicht distributiv ist, wird erwartet, dass die Berechnung des maximalen Fixpunkts und der Meet Over all Path zu unterschiedlichen Ergebnissen führen. Kann jemand solch ein Beispielprogramm geben?Fall, in dem Maximum Fixed Point fehlschlägt

Q2: Gibt es auch ein Programm, in dem spärliche konditionale konstante Weitergabe (-sccp) in llvm eine Konstante nicht ermitteln kann.

Antwort

2

Ein Beispiel genommen aus here:

if (...) 
    x = 1; 
else 
    x = -1; 
y = x * x; 

Mit den konstanten Ausbreitungsverfahren, ist der Wert von x keine Konstante nach der if-Anweisung. Daher ist der Wert y keine Konstante. Formal, wenn F eine Funktion für die letzte Anweisung ist, haben wir F(1 ⨆ -1) = F(⊤) = ⊤.

Mit MOP ist der Wert y eine Verknüpfung von zwei möglichen Pfaden und daher ist bekannt, 1 zu sein. Formal F(1) ⨆ F(-1) = 1 ⨆ 1 = 1.