Hi all,
Currently I am doing some work on CIL. I would like to obtain the conditional result (true/false) in the DOT file generated by CIL. Therefore, I modified the code in ext/
cfg.ml.
let d_cfgedge (src) () (dest) =
match src.skind with
| If (_, tb, fb, _) ->
(if (List.mem dest tb.bstmts) then
dprintf "%a -> %a [label=\"true\"]"
d_cfgnodename src
d_cfgnodename dest
else if (List.mem dest fb.bstmts) then
dprintf "%a -> %a [label=\"false\"]"
d_cfgnodename src
d_cfgnodename dest
else
dprintf "%a -> %a [label=\"true$\"]"(*true likely, note that no false likely!!!*)
d_cfgnodename src
d_cfgnodename dest);
| _ -> dprintf "%a -> %a"
d_cfgnodename src
d_cfgnodename dest
However, I am wondering whether my solution is correct becuase there is no related document explaining this issue. In particularly, in my real cases, I found the highlighted case is also hit. I am also wondering whether there are other cases that I don't consider here.
Look forward to your reply. Any concern or feedback would be greatly appreciated.
Thanks,
Haihao