genprog-code
genprog-code copied to clipboard
Question: how to determine that vstmt/vexpr RVAL contains a function call in GenProg AST
I’m stuck and I hope that perhaps that either of you might have some insight on the GenProg code with respect to the AST tree. My goal is to determine the coverage-based call tree statically given a specific coverage point.
So far, I have been able to:
- fix some of the underlying issues with the cdiff.ml related content (returned data structure in fundec_to_ast/internal_structural_signature/map_union)
- reuse/extend the basic cdiff functionality to get the parent/child relationship of the AST tree
- correlate the cdiff numbering scheme to the sid scheme used in the covVisitor.
However, when reviewing the results, it looks like when the RVAL is a function call, this parent->child relationship isn’t caught.
I’ve been reviewing the cil.ml code and it looks like I could potentially analyze the RVAL in an overridden vexpr method to see if its of type TFun, but I thought I would check with you, the expert(s), to get your thoughts. I see something like the visitCilExpr (line 5121 of cil.ml) that is similar to what I’m thinking, but I’m a bit lost.