Hi Gabriel,

Thanks for your feedback. I modified the code, however, it does not work.

let d_cfgedge (src) () (dest) =
    match src.skind with
      | If (_, tb, fb, _) ->
   (if (List.memq dest tb.bstmts) then
      dprintf "%a -> %a [label=\"true\"]"
             d_cfgnodename src
             d_cfgnodename dest
    else if (List.memq dest fb.bstmts) then
      dprintf "%a -> %a [label=\"false\"]"
             d_cfgnodename src
             d_cfgnodename dest
    else
      dprintf "%a -> %a"
      d_cfgnodename src
      d_cfgnodename dest);
      | _ -> dprintf "%a -> %a"
        d_cfgnodename src
        d_cfgnodename dest

The attachment is my example (you may focus on function named "test"). It
still hits the highlighted case.

Thanks,
Haihao

On Wed, Jul 21, 2010 at 3:09 PM, Gabriel Kerneis <kern...@pps.jussieu.fr>wrote:

> Hi ,
>
> On Wed, Jul 21, 2010 at 02:55:48PM +0800, haihao shen wrote:
> > 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
>
> You probably want to use List.memq (physical identity) rather than
> List.mem.  Except if you copy some statements during your
> transformations, but this is bad practice in CIL and should be avoided
> as much as possible.
>
> If you still have problems, send a minimal exemple here (e.g. the code
> of the C function where the highlighted code is hit).
>
> Regards,
> --
> Gabriel Kerneis
>

Attachment: example.c
Description: Binary data

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
CIL-users mailing list
CIL-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cil-users

Reply via email to