Version française
Home     About     Download     Resources     Contact us    
Browse thread
issues on modifying code in ext/cfg.ml in CIL
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: haihao shen <haihaoshen@g...>
Subject: issues on modifying code in ext/cfg.ml in CIL
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