let compare_edge_type e1 e2 =
if e1 == e2 then 0
else match e1, e2 with
| Enone, Enone | Ethen, Ethen | Eelse, Eelse | Eback, Eback
| EbackThen, EbackThen | EbackElse, EbackElse | Enext, Enext -> 0
| Ecase l1, Ecase l2 -> Extlib.list_compare Cil_datatype.Exp.compare l1 l2
| Enone, (Ethen | Eelse | Eback | EbackThen | EbackElse | Ecase _ | Enext)
| Ethen, (Eelse | Eback | EbackThen | EbackElse | Ecase _ | Enext)
| Eelse, (Eback | EbackThen | EbackElse | Ecase _ | Enext)
| Eback, (EbackThen | EbackElse | Ecase _ | Enext)
| EbackThen, (EbackElse | Ecase _ | Enext)
| EbackElse, (Ecase _ | Enext)
| Ecase _, Enext
-> -1
| Enext, (Ecase _ | EbackElse | EbackThen | Eback | Eelse | Ethen | Enone)
| Ecase _, (EbackElse | EbackThen | Eback | Eelse | Ethen | Enone)
| EbackElse, (EbackThen | Eback | Eelse | Ethen | Enone)
| EbackThen, (Eback | Eelse | Ethen | Enone)
| Eback, (Eelse | Ethen | Enone)
| Eelse, (Ethen | Enone)
| Ethen, Enone -> 1