Xingyu Xie
School of Software, Tsinghua University
referentially transparent: the value of an expression depends only on the value of its constituent expression, without side-effects
complete: no need to maintain any additional representation such as CFG
E-class: equivalence class in the graph
Repeatedly apply rewriting rules (equivalence axioms), until finding a fixed point e-graph, which represents all equivalent graph equivalent to the initial graph given a set of rewriting rules.
Strength: effective
Weakness: normalizing rule partially depends on optimization, only few passes are considered, such as global-value numbering and sparse-conditional constant propagation
Simple in nature as programs: no pointer, no loop
To consider UB (undefined behavior) in LLVM:
How? from equivalence to refinement
Equality-based
Symbolic-execution-based